2011-11-08 25 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或未初始化的值。