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

GDB-如何找到程序退出的位置,gdb,Gdb,在GDB中调试程序时,我得到一个意外的“程序正常退出”。所以我想知道是否有办法找出程序从哪里(哪一行)退出 如果有必要,程序是多线程的。通常在应用程序完成执行后使用以下命令: (gdb) thread apply all bt 当然,如果您想知道确切的行,您必须使用调试符号编译应用程序,即-g您可以尝试使用GDB命令break exit在exit(2)库调用上设置断点。如果这还不能满足您的需要,也许break\u exit。在获取后一个断点之前,可能需要使用“sta”启动程序。在任何一种情况下

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


如果有必要,程序是多线程的。

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

(gdb) thread apply all bt

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

您可以尝试使用GDB命令
break exit
在exit(2)库调用上设置断点。如果这还不能满足您的需要,也许
break\u exit
。在获取后一个断点之前,可能需要使用“sta”启动程序。在任何一种情况下,您都应该能够使用
where
命令获取堆栈跟踪,显示程序决定退出时您所在的位置。

在退出时设置断点,然后检查堆栈。

通常可以工作,但可能会失败:这不会在GDB 7.7.1上为我打印任何内容。