我启动了一个已经运行了几个小时的Centos进程。我使用gcc -g
来构建共享库和可执行文件。我输入gdb ./MatchUpAccurate
启动了gdb进程。 gdb启动后,我输入run -input XXXXXXX -fileloc YYYYY -version 5
。
当我输入ps -ef
时,我会看到两个进程ID号,一个用于gdb ./MatchUpAccurate.exe
,另一个用于./MatchUpAccurate.exe -input XXXXXXX -fileloc YYYYY -version 5
。
由于子进程现在已运行了几个小时,我想附加它,以便我可以检查其变量的值并查看它当前正在运行的指令。
我阅读了一些文档,了解如何使用gdb附加已经运行的进程。但是,所有示例都没有命令行参数。我想知道如何使用gdb附加一个带有命令行参数的进程。我将能够设置断点,检查变量,查看调用堆栈,并逐步执行执行路径而不会终止原始进程。谢谢。
答案 0 :(得分:4)
你需要附加到pid:
gdb binary_name pid
或者,启动gdb并附加
user@host ~> gdb binary_name
(gdb) attach 1234
答案 1 :(得分:2)
如果你使用gdb
启动你的exe,你不必附加它。只需点击Ctrl-C
,然后查看您的变量。
如果你想附加,请启动你的exe:
./myexe --myopt myargs
得到pid:
myexe_pid=$!
然后附上:
gdb ./myexe $myexe_pid
MY2C