c++ - 如何附加到带有命令行参数的进程?

标签 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 附加带有命令行参数的进程。我将能够设置断点、检查变量、查看调用堆栈并在不终止原始进程的情况下单步执行执行路径。谢谢。

最佳答案

您需要附加到 pid:

gdb binary_name pid

或者,启动 gdb 并附加

user@host ~> gdb binary_name
(gdb) attach 1234

关于c++ - 如何附加到带有命令行参数的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4900244/

相关文章:

linux - 为什么 gdb 回溯系统调用地址与系统调用表地址不同

c++ - 具有两个不同结果的 Rand 函数

c++ - std::vector 如何支持未知大小的自定义对象的连续内存

c++ - WSAEventSelect,一个事件,多个套接字

PHP 片段问题

bash - 为什么 '<<<' 会过滤 gdb 中的空字节,而 '<()' 不会?

c++在子字符串的最后一个匹配之后删除子字符串

linux - 齐奏失败 : Uncaught exception Failure ("input_value: ill-formed message")

linux - 在/dev/shm 的子目录中创建共享内存时,shm_open() 失败并返回 EINVAL

c - 让 gdb 与 emacs 24 一起工作