我正在学习 TDD 并在 Eclipse 中使用 CppUTest。有什么方法可以调试我的代码得到一个烦人的分段错误。
谢谢
我不知道 CppUTest 或 Eclipse 中有什么特别的东西可以帮助你,但是一些通用的段错误调试想法在这里似乎很合适:
将刷新打印语句(例如 printf(...) + fflush(stdout) 或 fprintf(stderr, ...))添加到您的代码中,然后查看打印的内容。以二进制搜索方式执行此操作,一次只打印几张照片,直到您准确缩小崩溃的位置。这听起来很老套,但非常有效。这是我在谷歌上找到的关于这种众所周知的技术的指南:http: //www.floccinaucinihilipilification.net/blog/2011/3/24/debugging-via-binary-search.html
使用调试符号编译代码并在调试器中运行。当你遇到段错误时,请求回溯,看看你是否能弄清楚发生了什么。这样做时,使用图形调试器会特别有帮助。
使用调试工具(例如调试 malloc 库或valgrind套件中的其他工具)运行您的代码。这可能会捕获作为段错误的根本原因的问题,但不会在生成段错误的确切位置发生(例如,双重释放、超出边界的数组访问、稍后使用的破坏指针等)。
如果您可以在您的问题中添加一些代码,这将很有帮助,以便我们更好地了解您所面临的问题。不知道任何细节,我会建议以下内容:
-v
可执行文件的参数。这将在执行测试用例时打印它们的名称。打印的姓氏可能是发生分段错误的测试。