2010-10-20 33 views
6

用GDB調試C++程序的一些常用技巧是什麼?使用gdb的C++專用調試技巧

有興趣在所有的招數也

  1. 你怎麼稱呼的對象的方法(可能是虛擬的)從GDB中

  2. 檢查STL對象(漂亮打印它們)

  3. 防止gdb進入STL代碼,並繼續處理內聯,線程,tcma處理內存問題

  4. 處理內聯,線程,tcma LLOC(或自定義分配器)gdb命令的

  5. 飼養歷史跨越不同的會話

+0

我會對大部分poi nts你已經列在那裏...非常好的問題 – MOnsDaR 2010-10-20 16:53:57

+1

另一個項目:通過初始化列表單步執行(可以用​​gdb完成嗎?) – nobar 2010-11-01 03:24:27

回答

3

嘗試DDD當您調試C++; DDD可以動態加載共享庫的源代碼,並在調試時顯示多個變量。

+0

這是*非常*上次我嘗試它的馬車。不確定在此期間是否有所改善。 – 2010-10-20 16:50:09

+0

它仍然是非常錯誤的。與我在Mac(Xcode)或Windows(Studio)上看到的相比,它比光年落後。 – user231536 2010-10-20 17:09:21

+0

Totalview更好,但花錢和Xcode/Studio是平臺相關的,所以DDD有時是唯一的選擇。 – 2010-10-20 17:24:52

2

1.

set print object 

這使得對象層次的評價通過查看虛表。所以你可以看到什麼類型的引用/指向基類的指針。

2.

獲取調試相關信息或剝開庫系統庫:否則調試多線程應用程序是不是在gdb工作很好(最重要的並行線程和libstdC++)。

0

因爲我發現我如何使用在〜/ .gdbinit掛鉤美化GDB(列表,回溯等),我不能沒有那個...的輸出

這裏是一個blogentry它展示瞭如何美化代碼輸出,並把一些「分水嶺」你的意見之間: Beautify GDB

我美化了我的回溯過,是非常有用的尋找到一個錯誤已經發生......也許我當我有權訪問它們時我會上傳需要的文件(我現在不工作)

+0

鏈接似乎已經死亡。 – Oak 2013-05-28 08:16:04

+0

你說得對。但是,您可以在互聯網檔案中找到快照:http://web.archive.org/web/20101217181206/http://www.michaelkelleher.info/?p=51 – MOnsDaR 2013-05-28 18:24:32