我在运行项目时遇到了段错误.每次我在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的操作.