GDB调试遇fork后脱离子进程无响应,如何退出或继续调试?
解决GDB调试中"Detaching after fork from child process.."无响应的问题
强制退出GDB
如果输入命令无响应,直接按 Ctrl + C 中断当前操作,随后执行 quit(或缩写q)命令退出GDB。若Ctrl + C也无法触发交互,可在另一个终端通过ps aux | grep gdb找到GDB进程号,执行 kill -9 <gdb进程号> 强制终止进程。
恢复调试并处理fork异常
- 先确认并修正GDB的fork跟踪配置:
- 执行
set follow-fork-mode parent(明确跟踪父进程) - 执行
set detach-on-fork off(关闭子进程自动分离)
配置完成后,用show follow-fork-mode和show detach-on-fork确认设置生效。
- 执行
- 若当前已处于无响应状态,按
Ctrl + C打断后,执行continue(或缩写c)命令恢复调试流程。
在其他位置设置断点
- 按
Ctrl + C让GDB回到交互状态,通过以下方式设置断点:- 按文件行号:
break <文件名>:<行号>,例如break main.c:45 - 按函数名:
break <函数名>,例如break handle_request - 按内存地址:
break *0x12345678
- 按文件行号:
- 设置完成后,执行
continue命令让程序运行到断点位置即可。
内容的提问来源于stack exchange,提问作者Cathy
相关产品推荐
相关产品推荐

