每次我使用 gdb 附加到一个进程时,它都会停止目标程序,我需要输入“cont”才能让它停止。有没有办法在不停止进程的情况下附加到进程?如果进程停止一段时间后表现会有所不同,这会让事情变得更容易。
我知道对此已经有一个很好的答案,但我不想使用额外的文件。
这是另一个答案:
gdb attach $(pidof process_name) -ex cont
你无法让它不停止。但是,您可以立即继续...创建一个简单的批处理脚本,该脚本将附加到特定进程并在附加后立即继续执行:
gdb attach $1 -x <(echo "cont")
./附上PID
当你不知道进程的PID时...
gdb attach $(pgrep -f myApp) -ex cont
debuginfod
支持(另请参阅相关问题)。如果没有这个额外的步骤,它仍然挂起我的远程终端,当我尝试调试窗口管理器问题时很难检测到这一点。在此示例中,<BINARY-NAME>
是进程二进制名称,而不是 PID。
echo 'set debuginfod enabled on' >> ~/.gdbinit
gdb -iex "set pagination off" -q -ex cont -p $(pidof <BINARY-NAME>)