在启动期间崩溃时如何使用 gdb 调试可执行文件?

Jon*_*lor 7 c c++ linux 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) 
Run Code Online (Sandbox Code Playgroud)

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

小智 2

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

catch throw
run
Run Code Online (Sandbox Code Playgroud)

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

break main
run
Run Code Online (Sandbox Code Playgroud)

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