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。

解决步骤

确认是否安装了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

"linux": {    "MIMode": "gdb",    "miDebuggerPath": "/usr/bin/gdb",    "program": "${workspaceFolder}/bin/main"}, 确保将/usr/bin/gdb替换为您的实际GDB路径。重新尝试调试: 保存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,可以按照以下步骤安装:

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

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

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

bash

brew install gdb  确认GDB安装: 安装完成后,使用gdb --version命令来确认GDB已正确安装。找到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)里进行调试

}

]

}

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。