1.gdb是什麼
前面剛剛介紹了gcc,既然提到了gcc,下一個必須要提的是gdb。gdb同樣是GNU出品的一款功能強大的工具,橫掃linux世界
gdb是一款調試工具,其功能之強大,深入使用之後你就會有感受。同gcc一樣,隨著gdb的使用你會有一種掌控一切的感覺。因為gdb更接近於底層,和作業系統的關係是那樣近。其操作的方式是那樣原始、野蠻,換句話說,更難但是學到的東西更多。
gdb是一款調試工具,用於軟體代碼調試和跟蹤,主要是為了尋找軟體bug和測試功能。通過使用gdb調試軟體,能夠使你深入到軟體內部,進入到程序運行世界,同軟體一起執行。等你調試過幾次後,你就會對計算機順序執行的理念深入感觸。
當然在你編譯軟體的時候一定要加上-O0和-g參數,不然很多細節會被優化。
總而言之,gdb是用來調試代碼,跟蹤定位問題的。
2.gdb有什麼用
gdb是提升代碼能力最重要的工具。
gdb的作用其實就是調試代碼的作用,調試代碼對於一個軟體工程師來說至關重要。提升自己工程能力分為兩步:
閱讀源碼調試代碼閱讀源碼就像是看書,更多的是理論或者抽象邏輯層面的。但代碼要想落地,變得真實起來,或者你想對軟體有一個感性的認識就必須進行調試。無論是python、java也好,調試都是至關重要的。但那些語言和c比起來,或者說那些語言的調試工具和gdb比起來,gdb調試的c代碼更加接近底層,更加接近作業系統,更加接近真實的軟體世界。
目前的軟體世界還是構建在c上的,掌握了調試C語言代碼你才能真正了解這個軟體世界。(我是這樣想的,也是這樣做的。)正是由於C語言的特殊性以及調試代碼的重要性,才越發凸顯出gdb的重要性來。gdb在一個軟體工程師的技術晉升之路上發揮著難以替代的作用。
以下提到的操作都是gdb的基本操作,真的值得你花幾分鐘大致了解一下。然後再自己找個程序親自調試一下,哪怕是最簡單的也好。編程從來都是會了1,然後循壞百、千、萬、億。
3.gdb基本操作
基本操作使用gdb啟動調試programgdb program
添加斷點列印變量內容跟蹤程序執行流程,了解程序邏輯
調試可執行文件gdb program如果有參數使用set args arg1 arg2調試進程,調試進程要先找到進程號並且進程要包含符號表ps -ef |grep program #找到進程號gdb -q attach pid調試動態庫調試動態庫要先寫測試用例,然後就跟調試可執行文件一樣了。調試核心轉儲文件gdb coredumpfile1
以上就是gdb的基本操作,說的言簡意賅,但基本操作都涵蓋了,都是我實際的使用經驗。更多的是需要你自己去調試,因為真正有價值的是你想了解的代碼,而不是工具本身。工具會使用就好了。