鱼C论坛

 找回密码
 立即注册
查看: 562|回复: 3

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

[复制链接]
发表于 2024-2-16 09:55:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
launch.json
  1. {
  2.     "version": "0.2.0",
  3.     "configurations": [
  4.         
  5.         {
  6.             "name": "(gdb) Launch",
  7.             "type": "cppdbg",
  8.             "request": "launch",
  9.             "program": "C:/Users/Administrator/Desktop/temp/c/hello",
  10.             "args": [],
  11.             "stopAtEntry": false,
  12.             "cwd": "C:/soft/cygwin64/bin",
  13.             "environment": [],
  14.             "externalConsole": false,
  15.             "MIMode": "gdb",
  16.             "setupCommands": [
  17.                 {
  18.                     "description": "Enable pretty-printing for gdb",
  19.                     "text": "-enable-pretty-printing",
  20.                     "ignoreFailures": true
  21.                 }
  22.             ],
  23.             // "preLaunchTask": "C/C++: g++ build active file",
  24.             "miDebuggerPath": "C:/soft/cygwin64/bin/gdb.exe"
  25.         }
  26.     ]
  27.    
  28. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-16 09:55:18 | 显示全部楼层
在你的launch.json配置文件中,有两个地方可能需要注意。

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

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

这是一个更新后的例子:

  1. {
  2.     "version": "0.2.0",
  3.     "configurations": [
  4.         {
  5.             "name": "(gdb) Launch",
  6.             "type": "cppdbg",
  7.             "request": "launch",
  8.             "program": "C:/Users/Administrator/Desktop/temp/c/hello",
  9.             "args": [],
  10.             "stopAtEntry": false,
  11.             "cwd": "${workspaceFolder}",
  12.             "environment": {},
  13.             "externalConsole": false,
  14.             "MIMode": "gdb",
  15.             "setupCommands": [],
  16.             "miDebuggerPath": "C:/soft/cygwin64/bin/gdb.exe"
  17.         }
  18.     ]
  19. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-16 10:00:03 | 显示全部楼层
FishC 发表于 2024-2-16 09:55
在你的launch.json配置文件中,有两个地方可能需要注意。

首先,确保你设置了"stopAtEntry": false,这 ...
  1. 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之后控制台的输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-4 13:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表