在Mac上使用valgrind

时间:2013-04-03 13:06:29

标签: c++ debugging gdb valgrind gmp

我有一条大约600行的c ++代码,由于seg错误,目前无法运行。我已经运行了gdb,但它并没有真正帮助我,因为我不知道我在寻找什么。我也运行valgrind,我被认为是更有帮助,但我正在研究mac和valgrind并不真正在mac上工作(在我使用它的警告中这样说,我正在运行OSX 10.8)。我没有linux盒子,因此无法正常运行valgrind。是否有人愿意通过valgrind运行我的代码来找到问题,或者有网站这样做?我在这里问的原因是因为我找到了网站,但是由于我使用的是gmp bignum库,网站只是因为他们没有网站而引发了关于库不存在的错误。

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

2 个答案:

答案 0 :(得分:3)

一种选择是安装免费的虚拟机,如VirtualBox

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

答案 1 :(得分:1)

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

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