Unable to start debugging. Launch options string provided by the project system is invalid. Unable to determine path to debugger.  Please specify the "MIDebuggerPath" option

如果您使用的是Linux系统,并且遇到了VSCode中的调试问题,提示需要指定MIDebuggerPath,这通常意味着您需要在launch.json配置文件中指定GDB或LLDB调试器的路径。根据您提供的launch.json配置,您已经为Linux配置了MIMode为gdb,并且尝试将miDebuggerPath设置为gdb。如果这不起作用,可能是因为VSCode无法在默认路径中找到gdb,或者您根本没有安装gdb。

解决步骤

  1. 确认是否安装了GDB: 打开终端,输入gdb --version来检查是否安装了GDB。如果没有安装,您需要先安装它。在Debian系的Linux发行版(如Ubuntu)上,可以使用以下命令安装GDB:
    bash
     

sudo apt-get update

sudo apt-get install gdb

找到GDB的安装路径: 如果已经安装了GDB,可以通过在终端输入which gdb来找到其安装路径。

更新launch.json配置: 根据which gdb命令的输出,更新launch.json中的miDebuggerPath。例如,如果which gdb输出的路径是/usr/bin/gdb,则需要将launch.json中的相应部分更新为:

json

  1. "linux": {
  2.     "MIMode": "gdb",
  3.     "miDebuggerPath": "/usr/bin/gdb",
  4.     "program": "${workspaceFolder}/bin/main"
  5. },



  6. 确保将/usr/bin/gdb替换为您的实际GDB路径。
  7. 重新尝试调试: 保存launch.json文件后,尝试再次启动调试会话。

注意事项

  • 确保您的项目已经成功构建,且"${workspaceFolder}/bin/main"确实指向了一个有效的可执行文件。
  • 如果您的项目需要特定的构建任务才能生成可执行文件,请确保"preLaunchTask"字段正确指向了这个构建任务。

按照以上步骤操作后,您应该能够解决VSCode中的调试问题。如果问题仍然存在,请检查VSCode的输出或调试控制台中是否有更具体的错误信息,这可能会提供更多关于问题的线索。

(base) zy@lfdeMacBook-Pro ~ % which gdb gdb not found

如果在您的系统中使用which gdb命令时返回“gdb not found”,这意味着GDB(GNU Debugger)尚未安装在您的Mac上。由于您提到正在使用的是Linux系统的配置,但实际上是在Mac上操作,这可能导致了一些混淆。首先,确保您的环境设置正确。根据您的描述,似乎您是在尝试在macOS上配置Linux的调试环境,但是我们将按照macOS上安装GDB的步骤来进行。

在macOS上安装GDB

macOS默认使用LLDB作为其调试器,它是与GDB相似的调试工具,随Xcode Command Line Tools一起安装。如果您特别需要GDB,可以按照以下步骤安装:

  1. 安装Homebrew: 如果您还没有安装Homebrew(macOS的包管理器),请先安装它。打开终端(Terminal)并运行以下命令:
    bash
     

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

使用Homebrew安装GDB: 安装Homebrew后,可以通过以下命令安装GDB:

bash

  1. brew install gdb

  2.  
  3. 确认GDB安装: 安装完成后,使用gdb --version命令来确认GDB已正确安装。
  4. 找到GDB的安装路径: 使用which gdb命令来找到GDB的安装路径。这将返回GDB的完整路径,例如/usr/local/bin/gdb。

配置VSCode以使用GDB

安装GDB后,您需要更新VSCode的launch.json配置文件,以确保它指向正确的miDebuggerPath。根据GDB的安装路径更新您的配置,例如:

json

"osx": {

    "MIMode": "gdb",

    "miDebuggerPath": "/usr/local/bin/gdb",

    "program": "${workspaceFolder}/bin/main"

},

注意

  • macOS可能需要您为GDB签名。由于macOS的安全限制,未签名的调试器可能无法正常运行。您可以通过搜索“macOS GDB签名”来找到相关的指导步骤。
  • 如果您不特别需要GDB,并且只是需要一个调试器,考虑使用macOS默认的LLDB。LLDB与GDB非常相似,且通常不需要额外配置即可在VSCode中使用。

按照这些步骤操作后,您应该能够在macOS上使用GDB进行调试。如果遇到任何问题,请检查VSCode的终端和调试控制台输出,以获取更多

task。json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++ 生成活动文件",
			"command": "/usr/bin/g++", // g++的路径
			"args": [
				"-fdiagnostics-color=always", // 颜色
				"-g",  // 调试信息
				"-Wall", // 开启所有警告
				"-std=c++14", // c++14标准
				"${file}", // 文件本身,仅适用于C++基础知识教学,无法同时编译所有文件
				// "${fileDirname}/*.cpp", // 文件所在的文件夹路径下所有cpp文件
				"-o", // 输出
				"${workspaceFolder}/release/${fileBasenameNoExtension}" // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
			],
			"options": {
				"cwd": "${fileDirname}" // 文件所在的文件夹路径
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: /usr/bin/g++"
		}
	]
}

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg", // C++调试
            "request": "launch",
            "program": "${workspaceFolder}/release/${fileBasenameNoExtension}",  // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}", // 文件所在的文件夹路径
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb",
                // "program": "${workspaceFolder}/bin/main"
            },
            "osx": {
                "MIMode": "lldb",
                "miDebuggerPath": "lldb-mi",
                "program": "${workspaceFolder}/bin/main"
            },// "miDebuggerPath": "gdb",
            // "MIMode": "lldb",
            // "MIDebuggerPath": "lldb-mi",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ 生成活动文件", // tasks.json的label
        },
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}", // 当前文件
            // "program": "demo.py", // 指定文件
            "console": "integratedTerminal",
            "justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
        }
    ]
}

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐