假设我想调试我的程序“Program.exe”的2个示例,每个示例都有不同的参数(“one”和“two”)。我还需要同时运行两个进程(或至少在1秒内)。
我读到过GDB的调试器可以让你在一个会话中运行和调试多个程序。这是我的尝试:
file Program.exe
set args one
add-inferior
inferior 2
file Program.exe
set args two
run
字符串
但没有成功。只有一个下级在跑
有什么想法吗?我在考虑这两个选择:
- 创建一个新的程序来fork进程,然后GDB可以通过“set fork-on-fork off”来处理这两个进程,但这种方法在我看来有点丑陋。
- 正常启动两个进程,然后在GDB中通过PID将它们连接起来。但我的环境是Windows,我不知道如何这样做,也不知道如何通过命令行参数找到PID。
先谢谢你了!
1条答案
按热度按时间x9ybnkn61#
你的尝试几乎成功了,你只需要额外的
starti
。在你启动每个进程之后,一个continue
可以用来启动所有进程。字符串
请记住设置上述内容,否则第二个
starti
将挂起。从第一个下级开始。
型
添加并启动第二次劣化。
型
继续两条走廊。
型
此时,inferior 1停止,gdb停止所有操作。如果您不喜欢这种行为,请参考https://stackoverflow.com/a/27163134/5267751。
我们继续跑第二次,直到完成。
型