GDB:同时调试同一应用程序的两个实例
GDB: Debug two instances of the same application simultaneous
我正在尝试调试同一应用程序的两个实例。因此我设置如下:
(gdb) set target-async on
(gdb) set non-stop on
(gdb) attach pid1
(gdb) set scheduler-locking off
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach pid2
(gdb) set scheduler-locking off
(gdb) b hello-world.cpp:8
Breakpoint 1 at 0x557a557761fd: ../hello-world.cpp:8. (2 locations)
(gdb) continue
我遇到的问题是,只有当前选择的次级被继续。有没有办法让所有的下级一个命令继续?
解决方案:
如果使用以下序列,则有效:
(gdb) attach pid1
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach pid2
(gdb) set schedule-multiple on
(gdb) b hello-world.cpp:8
Breakpoint 1 at 0x557a557761fd: ../hello-world.cpp:8. (2 locations)
(gdb) continue
感谢克劳斯!
要继续所有附加进程,您必须在 gdb 中设置调度程序模式。
set scheduler-locking off
现在继续让所有线程继续。
有关调度程序模式的详细说明,请查看here
正如您在评论中询问的完整程序是什么:
(gdb) attach <pid 1>
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach <pid 2>
(gdb) set scheduler-locking off
(gdb) b myprog.cpp:55
我正在尝试调试同一应用程序的两个实例。因此我设置如下:
(gdb) set target-async on
(gdb) set non-stop on
(gdb) attach pid1
(gdb) set scheduler-locking off
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach pid2
(gdb) set scheduler-locking off
(gdb) b hello-world.cpp:8
Breakpoint 1 at 0x557a557761fd: ../hello-world.cpp:8. (2 locations)
(gdb) continue
我遇到的问题是,只有当前选择的次级被继续。有没有办法让所有的下级一个命令继续?
解决方案:
如果使用以下序列,则有效:
(gdb) attach pid1
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach pid2
(gdb) set schedule-multiple on
(gdb) b hello-world.cpp:8
Breakpoint 1 at 0x557a557761fd: ../hello-world.cpp:8. (2 locations)
(gdb) continue
感谢克劳斯!
要继续所有附加进程,您必须在 gdb 中设置调度程序模式。
set scheduler-locking off
现在继续让所有线程继续。
有关调度程序模式的详细说明,请查看here
正如您在评论中询问的完整程序是什么:
(gdb) attach <pid 1>
(gdb) add-inferior
(gdb) inferior 2
(gdb) attach <pid 2>
(gdb) set scheduler-locking off
(gdb) b myprog.cpp:55