我有一个程序会导致机器出现段错误,我无法访问它。但是,当我在我的机器上使用相同的编译器和相同的输入编译和运行它时,我什么也得不到。问题可能是“数组索引越界”,在某些情况下可能会导致段错误,但是编译器不会显示任何警告。该程序庞大而复杂。所以我不能仅仅通过检查代码来发现问题。
关于如何在我的机器上获取段错误的任何建议?这样我就可以调试代码并找到问题所在。
最佳答案
你可以使用 valgrind
如果它在 Linux 机器上工作。
要使用 valgrind
,您只需在控制台输入:
valgrind --leak-check=full --num-callers=20 --tool=memcheck ./program
并且应该根据变量返回大小为 X 的无效读/写,并且(如果您使用调试信息进行编译),它会告诉您可能是问题所在的行。
顺便说一句,您可以在 Ubuntu/Debian Linux 中安装 valgrind
(例如),就像:
sudo apt-get install valgrind
关于c++ - 如果没有出现段错误,如何查找 "index out of bound",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669132/