Linux基礎系列 DEBUG 2

2021-05-27 15:11:18 字數 1073 閱讀 6235

gdb能為我們做些什麼:

之前有篇文章稍微介紹了點debug工具-gdb的工作原理。我們可能對gdb如何發揮作用有了一些了解,可問起gdb能為我們做些什麼時,可能大多數人除了除錯程式外,難以有乙個具體點的回答,這篇文章也就權當做乙個小總結,讓我們除了知道攪拌機是如何工作的,還知道用攪拌機能解決些什麼問題。

1,一般的,gdb可以讓我們了解程式在哪退出以及為何終止或退出

2,在開發過程中學會使用gdb,可以讓我們更清楚的知道自己編寫的程式的具體行為,提前發現問題。

3,gdb可以幫助我們獲取到程式執行時的軟硬體環境資訊,借助於gdb的可愛的info等命令。

4,借助gdb,可以動態的改變執行流程,可以無需重新編譯進行多種條件測試。

5,可以監看或修改一些程式執行時的資料,disp,watch。

7,可以除錯第三方的庫(沒有發布原始碼,沒有除錯資訊)來定位問題及原因,si,ni

8,可以在gdb中直接修改編譯**,是除錯過程如行雲流水般… shell.

為什麼要使用gdb:

很多仁兄(包括我,:()以前都認為printf可以解決很多問題,而且夠直接,gdb使用起來感覺不好把握,而且命令繁多,有些繁瑣。

誠然,printf在大部分情況下都是能夠解決問題的。但是,我們知道不同工具有不同的應用場景,殺雞不能用牛刀,殺牛也不能雞刀…

1,使用gdb有我們都知道的效率問題,但這還不足以讓我們的仁兄拋棄printf,因為當有問題出現時,往往直接使用printf比在回憶或查詢gdb的用法來的更直接。

2,使用printf進行debug的話,我們需要增加debug code,在一些非實時應用裡面,也許不會帶來什麼不好的應用,但在嵌入式開發中,在實時應用開發中,增加debug code會加大真實情況與除錯模式的差異。

3,使用gdb會幫助我們非常快速的追蹤**的行為並重現問題,當然了,這個快速是在我們能玩轉gdb的前提下,當我們知道gdb的魅力後,我們會有莫大的動力很快將它婉轉的,就像追女孩子…

4,使用gdb可以讓我們準確的掌握執行時的各種資訊,在這除錯潛伏的很深的問題時可能會給我們巨大的啟發。printf要達到這個目的,需要一些深厚的功底的。

DEBUG 2 函式的輸入引數要做適當的檢查

今天在除錯程式時發現,在單步執行的情況下,程式執行沒有問題,但是直接執行就會出問題。出問題的 如下 for int col 0 col 9 col if canmove id,row,col,killid else 當killid值為 1時,呼叫 if samecolor id,killid 很明顯...

Git 基礎系列 2

2 在linux下安裝git環境 三 git 使用流程 windows下安裝git是一件非常舒適的事情,幾乎不需要過多操作,簡單幾步即可完成。也可以選擇npm 的git映象 速度絕對美好 1 2 安裝 安裝過 的沒什麼好說的,正常的安裝步驟,在選擇安裝路徑的時候選擇乙個自己喜歡的路徑就好 小c不喜歡...

Linux基礎系列(八)

命令列修改 1 ifconfig 顯示或設定網路介面資訊 ifconfig eth0 192.168.182.20 netmask 255.255.255.0 ifconfig eth0 檢視eth0網絡卡介面資訊 ifconfig eth0 down up 關閉或開啟網絡卡 2 hostname ...