2011-11-08 27 views
0

我正在學習TDD並在eclipse中使用CppUTest。 有沒有什麼辦法來調試我的代碼獲得嘮叨的分段錯誤。CPPUTest調試 - C++

感謝

回答

2

我不知道CppUTest或者Eclipse什麼特別的幫助你,但一些通用的段錯誤調試的想法似乎是適當的位置:

  • 添加沖洗打印語句(如printf的(...)+ fflush(stdout)或fprintf(stderr,...))到您的代碼並查看打印內容。以二進制搜索的方式執行此操作,每次只打印幾張照片,直到您縮小,確切地說發生崩潰。這聽起來很舊,但非常有效。這裏有一個指南,我發現谷歌搜索這個知名的技術:http://www.floccinaucinihilipilification.net/blog/2011/3/24/debugging-via-binary-search.html

  • 編譯你的代碼與調試符號,並在調試器中運行它。當你遇到段錯誤時,要求回溯,看看你能否弄清楚發生了什麼。當這樣做時,使用graphical debugger會特別有幫助。

  • 使用類似debug malloc libraryvalgrind套件的調試工具運行您的代碼。這可能會引發問題,這些問題是段錯誤的根本原因,但不會發生在生成段錯誤的確切位置(例如,double frees,以後使用的數組訪問clobbering指針超出等等)。

+0

感謝您的信息。我用gdb做了一些調試,對設置調試環境不太熟悉。第二和第三點是他們的任何參考或一些鏈接,這將有助於我的設置。 – Saaras

+0

我添加了幾個可能對您有幫助的鏈接。 (它們都不是特定於Eclipse的,因爲我不是一個沉重的Eclipse用戶,但這些常規技術可以在任何地方工作。) – wjl

0

如果您可以在您的問題中添加一些代碼,以便更好地瞭解您所面臨的問題,那將會很有幫助。不知道任何細節,我會建議如下:

  1. -v添加到您的可執行文件在調試對話框中的參數。這將在您的測試用例執行時打印出您的測試用例的名稱。打印的姓氏可能是發生分段故障的測試。
  2. 將斷點在該測試情況下,如果你打電話給你的代碼測試
  3. 跳入代碼,直到段錯誤發生。
  4. 追溯導致段錯誤的值(通常是一個懸掛指針)並找出它爲什麼是NULL或未初始化的值。