0

我有一段大约 600 行长的 c++ 代码,由于段错误,目前没有运行。我已经运行了 gdb,但它并没有真正帮助我,因为我不知道我在寻找什么。我还运行了 valgrind,我被认为它更有帮助,但是我正在使用 mac 并且 valgrind 并不能真正在 mac 上运行(在我使用它时的警告中这么说,我正在运行 OSX 10.8)。我没有 linux 机器,因此无法正确运行 valgrind。有没有人愿意通过 valgrind 运行我的代码来查找问题,或者有没有这样做的网站?我在这里问的原因是因为我找到了网站,但是因为我使用的是 gmp bignum 库,所以该网站只是回避有关该库不存在的错误,因为他们没有它。

编辑:代码位于http://www.filedropper.com/tammesa7我不会在这里发布它,因为它又长又乱!

4

2 回答 2

3

一种选择是安装像VirtualBox这样的免费虚拟机。

您可以在其上干净地安装任何其他操作系统并使用可用的工具。

于 2013-04-03T15:31:51.317 回答
1

有几种方法可以调试代码。

  1. 在调试器中运行并使用“回溯”或“查看堆栈”类型选项会告诉您它在哪里崩溃。假设它确实崩溃了。
  2. 添加日志记录。将代码撒上printf("I'm in functon %s\n", __FUNCTION__);或类似的东西。打印变量值并与您“期望”的值进行比较。
  3. 添加代码以捕获“不良行为”。例如,检查 NULL 指针、超出范围的索引等。
  4. 减少相关代码。删除函数 - 例如,将整个函数设为注释,或在函数顶部添加“返回”。如果问题消失,撤消上一次更改,并尝试将其减少一点,看看会发生什么。
  5. 减少输入参数。如果您的代码使用大型数据文件作为输入,请尝试使用较小的数据文件。尝试删除某些数据 - 如果问题消失,那么您知道它(可能)在其余数据中。
于 2013-04-03T13:49:01.000 回答