如果我没有得到分段错误,如何找到"index out of bound"
How to find "index out of bound" if I don't get Segmentation Fault
我有一个程序会导致机器中的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之类的解决方案,或者您的编译器可能也有一些特定的能力,可以在我找到提升以检测这种访问之前插入保护字。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何找出GDB的SIGTRAP核心转储的根本原因
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 找不到QtResource文件中的文件
- Python中的for循环与C++有何不同
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- DrawIndexedInstanced 具有不同的 Index Count per Instance (Directx
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号