鱼C论坛

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

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

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

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

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

x
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"
        }
    ]
    
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 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之后控制台的输出
想知道小甲鱼最近在做啥?请访问 -> 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-12-23 14:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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