假设您具有适当的权限,则可以将gdb附加到任何进程.您可以在命令行上执行以下操作:
gdb /path/to/binary _pid_
Run Code Online (Sandbox Code Playgroud)
或者使用attach命令从gdb中:
attach _pid_
Run Code Online (Sandbox Code Playgroud)
因此,一旦您的守护程序启动,您可以使用这些技术之一附加到您的守护程序运行的最终PID.附加gdb会停止正在跟踪的进程,因此您需要发出"continue"以重新启动它.
我不知道在程序崩溃时让gdb运行任意命令的直接方法.这是我能想到的一个解决方法:
为什么不在持久性屏幕会话中以交互方式运行该过程?调试时为什么必须是守护进程?或者只是在屏幕会话中运行gdb并将其附加到正在运行的进程(例如gdb/path/to/binary -p PID_of_binary)之后.