gdb(借用vscode)无法击中断点
gdb(用vscode)无法击中断点
问题描述
我是用vscode remote到wsl上,使用wsl里的gdb进行调试;在设置条件断点后无法击中
类似于这种情况(使用的调试器不是本机的),请优先查看or查找远程连接的机子上调试器是否正常工作
虽然乍一看可能是vscode的问题,但是当我利用vscode终端、直接使用gdb进行调试时也无法击中断点。所以优先将问题锁定到gdb无法正常工作上。观察到经过断点处代码,但程序没有停下。
解决思路
分析:可能是把gdb挂在了父进程,而下断点部分的代码运行在子进程上。
考虑gdb的进程问题:gdb里执行该命令,将fork出来的子进程也被调试,而父进程不受影响(The new process is debugged after a fork. The parent process runs unimpeded.)
set follow-fork-mode child
(因为我这里并没有使用wsl,是借用vscode进行各种操作和调试的,所以我没有用这个方式)
考虑vscode终端窗口的问题:vscode提供了多样的终端窗口,而观察vscode对于新窗口的创建(从一个窗口调试会得到多个终端窗口)、猜测它相当于fork
,则关掉所有窗口后再ctrl+j
,此时进行调试即可击中断点