与标题一样。
如果其他线程/进程继续全速执行,有时对进程或线程的逐步调试会变得不方便。
如果两个进程都可以独立于bash(而不是另一个的子进程)启动,则可以通过这种方式调试两个进程。
答案 0 :(得分:0)
对于线程,这应该已经正在发生。
默认情况下,GDB在 all-stop 模式下执行较差。在该模式下,GDB将在一个线程停止时立即停止所有线程(因为它接收到信号,或者因为它遇到了断点)。另请参阅this answer。
虽然GDB也支持多个下级,但我不相信有任何机制可以执行“停止所有下级"相当于"停止所有线程"内置于GDB。
但是,您可以通过附加到断点的命令轻松实现:
(gdb) break foo.c:1234
(gdb) commands 1
shell kill -STOP 4321 # stop the other inferior
end
如果两个进程都可以独立于bash
启动,则可以通过这种方式进行调试
当然:您可以将两个进程附加到当前GDB((gdb) help attach
)或单独进程。它们从哪里开始并不重要。