这有点关系gdb 设置覆盖日志记录应该覆盖 gdb.txt 正确吗?。
假设我正在运行某个应用程序的会话。为了举例说明,让我再次以 qbittorrent 为例。
正如之前分享的,跑步是如何发生的——
$ gdb qbittorrent
(gdb) set logging overwrite on
(gdb) set logging on
(gdb) set pagination 0
(gdb) run
我知道的一种方法是优雅地退出应用程序,但有时应用程序会挂起/花费太多时间或根本没有响应。
然后我剩下的唯一选择是使用CTRL+C
它,如果我理解正确的话,会杀死底层应用程序,在我们的示例 qbittorrent 中,然后我能够通过以下方式退出 gdb
(gdb) quit
是否有任何其他方法可以退出应用程序并仍然让 gdb 会话继续运行,或者唯一的方法是我上面提到的粗略方法。
AFAI 知道终止应用程序进程应该是最后的解决方案,而不是第一个解决方案。
答案1
您可以为此使用信号。在启动程序之前,请在不影响程序的情况下进行设置USR1
或USR2
中断:gdb
handle SIGUSR1 nopass
然后你可以运行你的程序,当你需要停止它时,kill -USR1
从另一个具有适当(子)pid 的 shell 运行。gdb
将暂停应用程序,然后您可以添加断点、检查状态等,如果需要,可以使用 继续执行cont
。