首页 > 解决方案 > 启动期间崩溃时如何使用 gdb 调试可执行文件?

问题描述

我有一个基于 C 和 C++ 的项目,这是我第一次构建和链接,它在执行时出现段错误。我尝试在 gdb 中运行它以获取回溯,并看到了这个:

gdb) run
Starting program: /home/jon/controlix-code/bin/controlix 
During startup program terminated with signal SIGSEGV, Segmentation fault.
(gdb) bt
No stack.
(gdb) 

我认为它在 main() 被调用之前崩溃了,但除此之外我没有任何线索。我在谷歌上找不到太多关于这种情况的信息,所以我想我会在这里问。

标签: c++clinuxgdb

解决方案


一种方法是在运行之前捕获所有异常:

catch throw
run

如果这没有帮助,您可能必须从一开始就单步执行程序集。但在你这样做之前,

break main
run

并使用stepnext单步执行代码应该会导致您找到罪魁祸首。


推荐阅读