我正在编写一个有两部分的代码,一个是共享库,另一个不是(并且包含主函数)。
当我想启动VSC调试器时,主程序找不到
myProject.so
文件。
我尝试在
.vscode/launch.json
配置中添加路径,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/example/bin/debug/a.out",
"additionalSOLibSearchPath": "${workspaceFolder}/lib/**",
// ...
}
]
}
但从官方文档看来,
additionalSoLibSearchPath
设置仅适用于Windows,而没有明确或直接提及。我们可以猜到,因为这几个例子只使用了 Window 的路径。
如何在 Linux 上执行此操作?
您链接的文档非常清楚地说“用于GDB或LLDB”,所以我不相信这只是Windows的事情。事实上,考虑到这个名称(“SO”代表“共享对象”,而 Windows 通常使用术语“DLL”),如果它是 UNIX 独有的东西,我不会感到惊讶。文档没有提到要支持的 glob 星号,因此我建议您尝试明确说明所需的所有路径(根据文档,用分号分隔)而不使用 glob 星号。
所以你的第一个问题是“你使用的是 GDB 还是 LLDB?或者你是否使用 Visual Studio 之类的其他东西作为调试的‘后端’?”
另请参阅 https://code.visualstudio.com/docs/cpp/cpp-debug#_additional-symbols,其中指出:
如果调试器可以在其他目录中找到符号文件(例如,Visual Studio Windows 调试器的
文件),则可以通过添加.pdb
(对于 GDB 或 LLDB)或additionalSOLibSearchPath
(对于 Visual Studio Windows 调试器)。symbolSearchPath
目前远程调试显然存在局限性。请参阅https://github.com/microsoft/vscode-cpptools/issues/8344。
如果您对 C++ 扩展背后使用的 GDB 功能感到好奇,Andrew Wang 对此进行了解释
用于将additionalSOLibSearchPath
发送到GDB。set solib-search-path [Directories]