如何使用命令行参数附加到进程?

时间:2011-02-04 16:17:54

标签: c++ linux gdb

我启动了一个已经运行了几个小时的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附加一个带有命令行参数的进程。我将能够设置断点,检查变量,查看调用堆栈,并逐步执行执行路径而不会终止原始进程。谢谢。

2 个答案:

答案 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