GDB - 如何找出程序退出的位置

NoS*_*tAl 10 gdb

在GDB中调试程序时,我得到一个意外的"程序正常退出".所以我想知道是否有办法找出程序退出的地方(哪一行).

如果重要,程序是多线程的.

acm*_*acm 12

您可以尝试使用GDB命令break exit在exit(2)库调用上设置断点.如果那不能得到你所需要的,也许吧break _exit.在获得后一个断点之前,您可能需要使用'sta'启动程序.在任何一种情况下,您都应该能够使用该where命令获得堆栈跟踪,以显示程序何时决定退出的位置.


kar*_*lip 7

通常在应用程序执行完毕后使用以下命令:

(gdb) thread apply all bt
Run Code Online (Sandbox Code Playgroud)

当然,如果你想知道确切的行,你必须用调试符号编译你的应用程序,即 -g

  • 这在GDB 7.7.1上没有为我打印任何内容. (6认同)

Vin*_*ura 5

在 _exit 上设置断点,然后检查堆栈。