有人知道如何有效地调试mediapipe吗?
到目前为止,我将在第二行中放置print语句,并继续编译+运行代码,直到发现错误为止。
有没有任何方法可以使用断点和调试器(比如VS代码)来调试?
我已经看到vs代码具有Bazel扩展,但是我不知道如何正确配置扩展。
这就是我通常在根目录中的终端中运行的编译和运行的内容。
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu
bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_signn.pbtxt
更多信息:
显然,在vs代码中已经安装了一个bazel插件。这就是vs代码bazel插件设置的样子。虽然我可以为我的可执行文件找到一个潜在的候选人,但我不确定“构建者”。这是一个普通的bazel编译器吗?我目前正在使用bazelisk,它应该自动计算出所需的bazel版本。我能用这里的bazelisk可执行文件吗?
发布于 2022-06-13 10:14:46
一个简单的回答就是:将这些内容添加到.vscode/launch.json
中可以让我用断点来调试中介:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"preLaunchTask": "Bazel Build (Debug)",
"name": "CodeLLDB",
"type": "lldb",
"request": "launch",
"console": "internalConsole",
"program": "${workspaceFolder}/bazel-out/k8-dbg/bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu",
"args": ["--calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_signn.pbtxt"],
"env": {"GLOG_logtostderr":"1"},
"sourceMap": {
"/proc/self/cwd/": "${workspaceFolder}"
},
}
]
}
备注
我仍在通过命令行构建debugger
-c dbg
作为附加参数来编译适合与一起使用的二进制文件,这是一个必须事先安装的扩展(请参阅vscode extensions)."env": {"GLOG_logtostderr":"1"}
是一个系统变量(类似于linux中的$PATH ),这告诉调试器将Google日志程序的输出写到console/bazel-out/k8-dbg/bin/
,当您使用bazel使用调试标志( -c dbg )"args"
中需要与原始的启动command"/proc/self/cwd/": "${workspaceFolder}"
进行比较,以便调试器在正确的文件中中断(默认情况下,调试器打开的源文件与实际放置断点的源文件不同。
更新
如果还希望vscode执行构建,则需要在.vscode/tasks.json
中添加以下条目
{
"label": "Bazel Build (Debug)",
"type": "shell",
"command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu",
"group": {
"kind": "build",
"isDefault": true
},
}
注意标签"Bazel (Debug)“如何与launch.json中的”launch.json“对应
https://stackoverflow.com/questions/72488330
复制相似问题