windows mediapipe c++ vscode 单步调试

之前搞人体没有少用Mediapipe这个库,但都是以python的方式调用,有许多源码原理不清楚,最近打算看看源码,但是几乎没有调试Mediapipe的教程,所以自己调通后记录下

首先安装各种所需环境就参考这位大佬的文章,非常详细,本文就不过多赘述了,本人亲测可行

Mediapipe - Windows10 编译Mediapipe C++版本保姆级教程-优快云博客

这是参考上述文章后,自己的效果

接下来进入重点部分

第一次进入项目请以管理员身份打开终端,cd到 github 克隆下来的 mediapipe-master 的目录,然后运行 code . 打开 vscode

在这个地方点击输入后 > 选择

把打开的 UI 删掉,这时候会在项目根目录下出现 .vscode 目录,目录中含有 c_cpp_properties.json 文件(这个文件主要是配置C++编译器路径)

这个文件中配置如下:

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/**",
        "${vcpkgRoot}/x64-windows/include"
      ],
      "defines": [
        "_DEBUG", 
        "UNICODE", 
        "_UNICODE"],
      "windowsSdkVersion": "10.0.22621.0",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "compilerPath": "D:/visual_studio/VC/Tools/MSVC/14.39.33519/bin/Hostx86/x86/cl.exe",
      "intelliSenseMode": "windows-msvc-x64"
    }
  ],
  "version": 4
}

其中 compilerPath 替换为自己的 visual studio 的安装路径,进去确保后面的 cl.exe 存在

windowsSdkVersion替换为自己的版本,最后一个点之后置 0 即可

windowsSdkVersion在控制面板里的卸载程序中,找到如下这一列

做完上面的之后,继续上方点击输入后 > 选择

之后会在.vscode 中出现 tasks.json

这个文件中配置如下:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build",
      "type": "shell",
      "command": "bazel build -c dbg --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH=\"D:\\anaconda\\python.exe\" mediapipe/examples/desktop/hello_world"
    },
    {
      "label": "SetEnv",
      "type": "shell",
      "command": "set GLOG_logtostderr=1"
    },
    {
      "label": "Bazel Build (Run Opt)",
      "dependsOn": ["Build", "SetEnv"],
      "dependsOrder": "sequence"
    }
  ]
}

其中 label 为 Build 是编译代码部分

SetEnv 是为了运行可执行代码而进行的环境设置

之后进入vscode左侧这个地方后点击创建launch,json文件

                        

在launch.json中配置如下:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(windows) Bazel Launch Run Opt",
      "preLaunchTask": "Bazel Build (Run Opt)",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hello_world/hello_world.exe",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}/bazel-bin/mediapipe/examples/desktop/hello_world/hello_world.exe.runfiles",
      "environment": [],
      "console": "externalTerminal"
    }
  ]
}

配置后,进入 mediapipe/examples/desktop/hello_world 目录

打开 helloword.cc

右上角点击

之后的弹窗选择刚刚配置的

之后等待进入调试页面,等待程序运行,之后程序就在停在

点击右上角弹出的

即可单步执行代码,我自己的效果如下,在 return 0 之前效果:

到此单步调试完成。

值得记录的是,每次都以管理员的形式进入很麻烦

这里提供一种点击进入的方法

点击vscode文件,将工作区另存为...

将.code-workspace保存在项目根目录下即可

之后再根目录下新建 vscode.txt

其中内容为:

call "D:\visual_studio_community\VC\Auxiliary\Build\vcvars64.bat"
code .\mediapipe_vscode.code-workspace
exit

记得把 call 之后的路径修改为自己的

然后将 vscode.txt 文件名后缀改为 bat (即文件名为:vscode.bat)

这样再次打开项目直接在目录中点击该 vscode.bat 即可

要不直接进入 vscode 运行 msvc 的项目会报错

cl.exe build and debug is only usable when VS Code isrun from the Developer Command Prompt for VS.

到此,就能够调试 mediapipe 了,后续如果有时间会继续调试其他功能记录在优快云

### 在 VSCode 中进行单步调试的操作指南 在 VSCode 中进行单步调试是一项常见的开发需求,适用于多种语言和项目类型。以下是基于不同场景的单步调试操作方法: #### 1. **通用配置** 在开始单步调试之前,需要确保以下基本条件: - 安装了对应语言的调试插件(如 C/C++、Python、PHP 等)。 - 配置好 `.vscode/launch.json` 文件以支持调试功能。 #### 2. **C/C++ 项目调试(如 ApolloAuto 或 DPDK)** 对于 C/C++ 项目,例如 ApolloAuto[^1] 或 DPDK[^2],可以按照以下步骤进行单步调试: - **安装调试工具**:确保安装了 GDB 或 LLDB 调试器,并在 VSCode 中安装 C/C++ 插件。 - **配置 launch.json**:在 `.vscode/launch.json` 文件中添加如下配置: ```json { "version": "0.2.0", "configurations": [ { "name": "C/C++ Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/main", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } ``` - **启动调试**:点击调试按钮(绿色三角形),选择对应的调试配置并运行程序。 - **单步调试**:使用快捷键 `F10` 进行单步跳过,`F11` 进入函数内部,`Shift + F11` 退出当前函数。 #### 3. **ESP32 项目调试** 对于 ESP32 项目,如参考中的 ESP32-S3 单步调试[^3],需要额外配置串口调试环境: - **编译与下载**:确保代码已成功编译并通过串口下载到目标设备。 - **配置调试环境**:修改 `.vscode/launch.json` 文件,确保路径正确: ```json "miDebuggerPath": "${command:espIdf.getToolchainGdb}" ``` - **启动调试**:连接目标设备后,在 VSCode 中启动调试会话,通过 GDB 控制台查看调试信息。 #### 4. **PHP 项目调试** 对于 PHP 项目,如参考中的 PHP 调试指南[^4],可以按照以下步骤进行单步调试: - **安装 XDebug**:确保服务器已启用 XDebug 扩展,并配置 `xdebug.mode=debug` 和 `xdebug.start_with_request=yes`。 - **配置 launch.json**:在 `.vscode/launch.json` 文件中添加如下配置: ```json { "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9003, "pathMappings": { "/var/www/html": "${workspaceFolder}" } } ] } ``` - **启动调试**:在浏览器中访问目标页面时附加 `XDEBUG_SESSION_START=1` 参数,VSCode 将捕获调试请求。 - **单步调试**:使用快捷键 `F10` 和 `F11` 控制程序执行流程。 #### 注意事项 - 确保目标程序已编译为调试版本(通常需要开启 `-g` 编译选项)。 - 如果调试过程中遇到问题,可以检查调试控制台输出以定位错误原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ligaoqi2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值