vscode运行C++:可运行但无法调试解决方案

文章介绍了在VSCode中遇到C++程序可以运行但无法调试的常见问题,提供了解决方案。通过修改launch.json中的program字段和添加preLaunchTask,并创建相应的task.json,设置preLaunchTask与task.json中的标签一致,从而使得调试功能正常工作。配置文件包括launch.json、tasks.json和c_cpp_properties.json的修改内容。

vscode运行C++:可运行但无法调试解决方案

问题描述

vscode中下载了c/c++ complie runCode Runner,可以自动生成c++运行所需的配置文件(.vscode\launch.json、.vscode\settings.json、.vscode\c_cpp_properties.json),但是无法调试,调试时报错如下:
在这里插入图片描述

解决方案

1.修改 launch.json中的"program": “${fileDirname}\${fileBasenameNoExtension}.exe”,
2.在launch.json中添加"preLaunchTask": “mytask”,
3.ctrl+shift+p,创建task.json,将label改为"mytask",与"preLaunchTask"的值一致。
备注:“mytask”可以随便起,只要两者一致即可。
创建task.json

我的配置文件


// launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": true,
      "cwd": "e:/code_vsc/vehicle",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "MIMode": "gdb",
      "miDebuggerPath": "gdb",
      "preLaunchTask": "mytask",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}
//tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "mytask",
			"command": "D:\\MinGW\\mingw64\\bin\\g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: D:\\MinGW\\mingw64\\bin\\g++.exe"
		}
	]
}
// settings.json
{
  "C_Cpp_Runner.cCompilerPath": "gcc",
  "C_Cpp_Runner.cppCompilerPath": "g++",
  "C_Cpp_Runner.debuggerPath": "gdb",
  "C_Cpp_Runner.cStandard": "",
  "C_Cpp_Runner.cppStandard": "",
  "C_Cpp_Runner.msvcBatchPath": "",
  "C_Cpp_Runner.useMsvc": false,
  "C_Cpp_Runner.warnings": [
    "-Wall",
    "-Wextra",
    "-Wpedantic",
    "-Wshadow",
    "-Wformat=2",
    "-Wconversion",
    "-Wnull-dereference",
    "-Wsign-conversion"
  ],
  "C_Cpp_Runner.enableWarnings": true,
  "C_Cpp_Runner.warningsAsError": false,
  "C_Cpp_Runner.compilerArgs": [],
  "C_Cpp_Runner.linkerArgs": [],
  "C_Cpp_Runner.includePaths": [],
  "C_Cpp_Runner.includeSearch": [
    "*",
    "**/*"
  ],
  "C_Cpp_Runner.excludeSearch": [
    "**/build",
    "**/build/**",
    "**/.*",
    "**/.*/**",
    "**/.vscode",
    "**/.vscode/**"
  ]
}
//c_cpp_properties.json
{
  "configurations": [
    {
      "name": "windows-gcc-x64",
      "includePath": [
        "${workspaceFolder}/**"
      ],
      "compilerPath": "D:/MinGW/mingw64/bin/gcc.exe",
      "cStandard": "${default}",
      "cppStandard": "${default}",
      "intelliSenseMode": "windows-gcc-x64",
      "compilerArgs": [
        ""
      ]
    }
  ],
  "version": 4
}
### VSCode 远程调试配置教程 #### 配置远程调试环境 为了实现VSCode中的远程调试功能,需先确保本地计算机已安装必要的扩展包。对于Python代码的远程调试,在VSCode中应安装Python扩展以及Remote - SSH扩展[^1]。 #### 创建SSH连接 建立到目标Linux服务器的安全Shell(SSH)连接是启动任何远程操作的第一步。这可以通过点击活动栏上的“远程资源管理器”图标并选择“SSH Targets”,然后输入相应的用户名@IP地址来完成。首次连接时会提示确认指纹,并可能需要输入密码或使用密钥认证方式登录[^2]。 #### 设置调试配置文件 一旦成功建立了SSH链接,则可以在`.vscode/launch.json`内定义具体的调试选项。针对Python项目而言,此JSON文档应当包含有关待运行脚本的信息、参数传递方法以及其他特定于项目的设置项。例如: ```json { "version": "0.2.0", "configurations": [ { "name": "Python: Remote Attach", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 // 调试端口, 应与远端开启的服务相匹配 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/path/to/project/on/server" } ] } ] } ``` 上述配置允许用户附着至已经在远程机器上监听指定端口号(此处假设为5678)等待连接请求的Python调试服务器实例。 #### 启动远程调试服务 在实际开始调试之前,还需确保已在远程主机上正确设置了用于接收来自客户端IDE连接请求的服务程序。对于Python应用来说,可以利用`ptvsd`库或其他兼容PDB协议的方式创建这样的守护进程;而对于C/C++应用程序则通常采用GDBServer作为后台处理单元[^3]。 当一切准备就绪后,只需按下F5键即可触发一次完整的远程调试过程——此时VSCode将会尝试按照预先设定好的规则自动定位源码位置并与之同步断点状态等重要信息[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值