0

我正在学习 TDD 并在 Eclipse 中使用 CppUTest。有什么方法可以调试我的代码得到一个烦人的分段错误。

谢谢

4

2 回答 2

3

我不知道 CppUTest 或 Eclipse 中有什么特别的东西可以帮助你,但是一些通用的段错误调试想法在这里似乎很合适:

  • 刷新打印语句(例如 printf(...) + fflush(stdout) 或 fprintf(stderr, ...))添加到您的代码中,然后查看打印的内容。以二进制搜索方式执行此操作,一次只打印几张照片,直到您准确缩小崩溃的位置。这听起来很老套,但非常有效。这是我在谷歌上找到的关于这种众所周知的技术的指南:http: //www.floccinaucinihilipilification.net/blog/2011/3/24/debugging-via-binary-search.html

  • 使用调试符号编译代码并在调试器中运行。当你遇到段错误时,请求回溯,看看你是否能弄清楚发生了什么。这样做时,使用图形调试器会特别有帮助。

  • 使用调试工具(例如调试 malloc 库valgrind套件中的其他工具)运行您的代码。这可能会捕获作为段错误的根本原因的问题,但不会在生成段错误的确切位置发生(例如,双重释放、超出边界的数组访问、稍后使用的破坏指针等)。

于 2011-11-08T21:50:51.080 回答
0

如果您可以在您的问题中添加一些代码,这将很有帮助,以便我们更好地了解您所面临的问题。不知道任何细节,我会建议以下内容:

  1. 在“调试”对话框中添加-v可执行文件的参数。这将在执行测试用例时打印它们的名称。打印的姓氏可能是发生分段错误的测试。
  2. 在该测试用例中放置一个断点,在该测试用例中调用您的代码
  3. 进入您的代码,直到发生段错误。
  4. 追溯导致段错误的值(最常见的是悬空指针)并找出它为什么为 NULL 或未初始化。
于 2015-04-29T19:10:20.193 回答