如果我没有得到分段错误,如何找到"index out of bound"

How to find "index out of bound" if I don't get Segmentation Fault

本文关键字:何找 index out bound of 错误 如果 分段      更新时间:2023-10-16

我有一个程序会导致机器中的Seg故障,我无法访问该程序。然而,当我在机器上使用相同的编译器和相同的输入进行编译和运行时,我什么都得不到。问题可能是"数组索引越界",在某些情况下可能会导致Seg Fault,但编译器不会显示任何警告。这个程序庞大而复杂。所以我不能仅仅通过检查代码来发现问题。

关于如何在我的机器上也出现分段故障,有什么建议吗?通过这种方式,我可以调试代码并找到问题。

如果valgrind在Linux机器上工作,则可以使用它。要使用valgrind,只需在控制台上键入:

valgrind --leak-check=full --num-callers=20 --tool=memcheck ./program

并且应该根据变量返回大小为X的无效读/写,并且(如果您使用调试信息进行编译),它会告诉您问题可能在哪里。

顺便说一句,你可以在Ubuntu/DebianLinux中安装valgrind(例如),就像一样简单

sudo apt-get install valgrind

您可以尝试其他海报中提到的Valgrind之类的解决方案,或者您的编译器可能也有一些特定的能力,可以在我找到提升以检测这种访问之前插入保护字。