首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置调试器?(使用VS Code和Bazel)

如何配置调试器?(使用VS Code和Bazel)
EN

Stack Overflow用户
提问于 2022-06-03 10:33:25
回答 1查看 312关注 0票数 0

有人知道如何有效地调试mediapipe吗?

到目前为止,我将在第二行中放置print语句,并继续编译+运行代码,直到发现错误为止。

有没有任何方法可以使用断点和调试器(比如VS代码)来调试?

我已经看到vs代码具有Bazel扩展,但是我不知道如何正确配置扩展。

这就是我通常在根目录中的终端中运行的编译和运行的内容。

代码语言:javascript
运行
复制
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可执行文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-13 10:14:46

一个简单的回答就是:将这些内容添加到.vscode/launch.json中可以让我用断点来调试中介:

代码语言:javascript
运行
复制
{
    // 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

  • CodeLLDB

  • ,使用-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中添加以下条目

代码语言:javascript
运行
复制
    {
        "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“对应

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72488330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档