如何解决vscode c ++调试器包含路径配置
TL; DR:
如何在vscode中包含调试器(gdb)的c ++源文件/头(使用c_cpp_properties.json中的“ includePath”不起作用)?
上下文:
我正在Ubuntu 18.04上使用vscode,并正在开发一个由Makefiles构建的C ++开源项目。我可以使用Makefiles成功构建项目,并且在/ src目录中生成了名为“ target”的二进制文件,并且大多数源文件都在同一目录中。我使用以下配置启动vscode调试器:
launch.json
"version": "0.2.0","configurations": [
{
"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/src/target","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [
{
"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true,"directory": "/src"
}
],}
]
}
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux","includePath": [
"${workspaceFolder}/**"
],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "gnu11","cppStandard": "gnu++14","intelliSenseMode": "${default}",}
],"version": 4
}
一切正常,调试器在/ src下的.cpp文件中设置的断点处停止。但是,当我尝试进入其源文件位于其他目录(如/usr/include/
)中的函数时,调试器无法进入该文件。
我猜这是因为编译器没有包含编译为与实际源路径不匹配的二进制文件的/usr/include/
或“调试符号和源路径”。我试图在/usr/include/
的{{1}}中包括includePath
,但实际上不起作用。所以我想知道下一步该怎么做?
PS
除了这个问题。我觉得vscode文件包含过程只是一个黑匣子。如今我
只是看到c_cpp_properties.json
下有一个includePath
属性,该属性旨在由intelliSense引擎而非编译器或调试器使用。而且我看不到task.json(compiler)和launch.json(debugger)的任何类似包含选项。最有线的事情是,即使我将c_cpp_properties.json
留空,intellisense仍然可以找到位于includePath
,/usr/include
等著名目录中的源文件,而编译器和调试器则找不到。我想知道是否有正式文件系统地记录了vscode中包含过程的工作原理?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。