Linux基礎系列-DEBUG-2

來源:互聯網
上載者:User

gdb能為我們做些什麼:

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

本文很多內容來自Jim Huang的happygdb,在此表示感謝。

 

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

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

3,gdb可以協助我們擷取到程式運行時的軟硬體環境資訊,藉助於gdb的可愛的info等命令。

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

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

6,可以查看彙編:dissamble main(或地址)

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要達到這個目的,需要一些深厚的功底的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.