gpt4 book ai didi

c++ - 如何从外部分离 gdb session ?

转载 作者:行者123 更新时间:2023-12-04 13:29:01 25 4
gpt4 key购买 nike

我使用如下命令在后台启动 gdb session :

gdb --batch --command=/tmp/my_automated_breakpoints.gdb -p pid_of_proces> &> /tmp/gdb-results.log &
&最后让它在后台运行(然后 shell 会立即关闭,因为此命令是由单个 ssh 命令发出的)。
我可以找到 pidgdbps -aux | grep gdb 的 session .
但是:我怎样才能优雅地从正在运行的进程中分离这个 gdb session ,就像我在我面前使用 (gdb) detach 的终端 session 一样命令?
当我使用 kill -9 gdb_pid 终止 gdb session (而不是正在运行的进程本身)时, 我不想要 SIGABRT s 之后在运行的程序中。
重新启动服务对于我的目的来说太耗时了。
如果使用此自动化脚本成功调试 session ,我可以在批处理脚本中使用 detach 命令。然而,这不是我的情况:当 session 期间出现一些错误时,我想分离/退出正在运行的 gdb session ,所以我想从另一个终端 session 中优雅地手动分离 gdb。

最佳答案

如果您运行 gdb来自终端 #1 的后台命令,您可以随时带上 gdb通过运行命令 fg 回到前台.然后,您可以简单地按 CTRL+C 和 detach一如既往地优雅地停止调试 session 。
假设终端 #1 现在被其他东西占用而您无法使用它,您可以发送 SIGHUPgdb 发出信号分离它的过程:

sudo kill -s SIGHUP $(pidof gdb)
(如果您有多个 gdb 实例,请将 $(pidof gdb) 替换为实际的 PID)

关于c++ - 如何从外部分离 gdb session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66358126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com