无法在gdb中重现段错误

rah*_*hmu 12 c gdb

我在运行项目时遇到了段错误.每次我在gdb中运行程序时,段错误都会消失.这种行为不是随机的:每次我在shell中运行它都会出现段错误,每次我在gdb中运行它时,段错误都会消失.(我确实使用-g重新编译).

所以在我开始在代码中的任何地方疯狂添加printfs之前,我想知道一些事情:

  • 这种行为常见吗?
  • 解决这个问题的最佳方法是什么?

我不知道测试是否可以编写脚本,因为我的应用程序是交互式的,并且在特定的用户输入上崩溃.

我没有在这里粘贴我的代码,因为它太长了.但如果有人有兴趣帮忙,请点击这里:https: //github.com/rahmu/Agros

Foo*_*Bah 15

最简单的解决方法是捕获核心转储:

$ ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

然后运行你的程序.它会生成一个core文件

然后使用gdb:

$ gdb ./program core
Run Code Online (Sandbox Code Playgroud)

并且gdb将加载并且您可以运行回溯以确切地查看引发segfault的操作.