使用 Windows,我位于文档文件夹中的一个简单存储库中,在其中构建了一个要调试的 C++ 文件。 我尝试了 bazel 的多个输出(请参阅注释掉的
program
属性),但除了注释掉的那个之外,所有输出都会启动,但根本不停止 - 无论是在入口处还是在断点处。中注释的 on 确实在输入时停止,但返回一个奇怪的文件路径。它不在我的文档文件夹中,而是在桌面上,尽管桌面是空的。路径也是重复的:
C:\Users\peter\Desktop\simple_project\C\Users\peter\Desktop\simple_project\main.cc
在我看来,GDB 编译的调试符号的路径是错误的。 您认为这可能是问题所在吗?如果是,我如何指定应编译成正确的符号?
这是我的launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Bazel Debug",
"preLaunchTask": "Bazel build (debug)",
"type": "cppdbg",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bazel-${workspaceFolderBasename}/${relativeFileDirname}/${fileBasenameNoExtension}.exe",
// "program": "${workspaceRoot}/bazel-out/x64_windows-dbg/bin/${relativeFileDirname}/${fileBasenameNoExtension}.exe",
//"program": "${workspaceRoot}/bazel-bin/${relativeFileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": true,
"MIMode": "gdb",
"targetArchitecture": "x64",
"miDebuggerPath": "C:\\ProgramData\\cygwin64\\bin\\gdb.exe",
"launchCompleteCommand": "exec-run",
"sourceFileMap": {
"${workspaceFolder}/bazel-${workspaceFolderBasename}": "${workspaceFolder}"
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
]
}
]
}
根据tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Bazel build (debug)",
"type": "shell",
"command": "bazel build --compiler=C:\\ProgramData\\cygwin64\\bin\\g++.exe --strip=never -c dbg //...",
"group": "build"
}
]
}
您的程序应该指向 bazel-out 内的 dbg 文件夹中的可执行文件。 所以像下面这样的东西应该有效:- “程序”:“${workspaceRoot}/bazel-out/k8-dbg/${relativeFileDirname}/${fileBasenameNoExtension}.exe”。