Max472 发表于 2024-2-16 09:55:05

vscode 配置gdb 调试,可以打断点但是无法停在断点处

launch.json
{
    "version": "0.2.0",
    "configurations": [
      
      {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "C:/Users/Administrator/Desktop/temp/c/hello",
            "args": [],
            "stopAtEntry": false,
            "cwd": "C:/soft/cygwin64/bin",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                  "description": "Enable pretty-printing for gdb",
                  "text": "-enable-pretty-printing",
                  "ignoreFailures": true
                }
            ],
            // "preLaunchTask": "C/C++: g++ build active file",
            "miDebuggerPath": "C:/soft/cygwin64/bin/gdb.exe"
      }
    ]
   
}

FishC 发表于 2024-2-16 09:55:18

在你的launch.json配置文件中,有两个地方可能需要注意。

首先,确保你设置了"stopAtEntry": false,这样GDB将不会在程序入口处停下来。如果你想要在程序开始时就停下来,可以将该值设置为true。

其次,你需要正确设置"cwd"字段,它指定了GDB的当前工作目录。确保它指向你的项目文件夹。

这是一个更新后的例子:

{
    "version": "0.2.0",
    "configurations": [
      {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "C:/Users/Administrator/Desktop/temp/c/hello",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": {},
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [],
            "miDebuggerPath": "C:/soft/cygwin64/bin/gdb.exe"
      }
    ]
}

请根据你的具体情况进行相应调整。现在,尝试再次运行调试器并设置断点,看看是否能够在断点处停下来。如果还有问题,请提供更多的细节和错误信息,以便我们能够帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

Max472 发表于 2024-2-16 10:00:03

FishC 发表于 2024-2-16 09:55
在你的launch.json配置文件中,有两个地方可能需要注意。

首先,确保你设置了"stopAtEntry": false,这 ...

PS C:\Users\Administrator\Desktop\temp\c>& 'c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-1.19.3-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-e0fijdhe.hwm' '--stdout=Microsoft-MIEngine-Out-e3ukuvzu.gzt' '--stderr=Microsoft-MIEngine-Error-gzbdvyak.iy0' '--pid=Microsoft-MIEngine-Pid-ojejl01j.kn4' '--dbgExe=C:/soft/cygwin64/bin/gdb.exe' '--interpreter=mi'

这是执行debug之后控制台的输出

FishC 发表于 2024-2-16 10:00:18

Max472 发表于 2024-02-16 10:00
PS C:\Users\Administrator\Desktop\temp\c>& 'c:\U ...

根据你提供的控制台输出,问题可能出在Cygwin和GDB的配置上。请按照以下步骤检查你的配置:

1. 确保你安装了最新版本的Cygwin,并选择了合适的包(例如`gcc-core`, `gdb`等)。可以在Cygwin的官方网站下载最新版本:https://cygwin.com/install.html

2. 检查launch.json中"miDebuggerPath"字段的路径是否正确,它应该指向Cygwin中的gdb.exe文件。确保路径名中的斜杠是正斜杠("/")而不是反斜杠("\")。

3. 检查launch.json中"cwd"字段的路径是否正确,它应该指向你要调试的项目文件夹的路径。同样,确认路径名中的斜杠是正斜杠("/")。

如果以上步骤都没有解决问题,你可以尝试以下方法:

1. 如果你安装了其他编译工具链(如MinGW),尝试将"miDebuggerPath"字段的路径改为对应工具链中的gdb.exe文件路径。

2. 尝试在launch.json文件中设置"externalConsole"字段为true,这样可以使用外部控制台来执行程序,有时可以解决一些与内置终端相关的问题。

希望以上方法能够帮助你解决问题。如果还有其他问题,请提供更多的细节和错误信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: vscode 配置gdb 调试,可以打断点但是无法停在断点处