windows mediapipe c++ vscode 单步调试

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

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

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

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

接下来进入重点部分

第一次进入项目请以管理员身份打开终端,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 了,后续如果有时间会继续调试其他功能记录在CSDN

### 如何在 VSCode 中执行单步调试 为了实现单步调试,在 VSCode 中设置断点并启动调试会话是必要的操作。当程序运行到设定的断点处时,将会暂停以便开发者可以逐步检查代码逻辑。 #### 设置断点 通过点击编辑器左侧行号旁边的空白区域来创建断点。一旦设置了断点,该位置就会标记一个小圆圈表示此处已设定了断点[^1]。 #### 启动调试模式 确保已经配置好了项目的 `launch.json` 文件用于指定调试选项。之后可以通过按快捷键 F5 或者从顶部菜单栏选择 **Run > Start Debugging** 来开启调试过程。 #### 单步步过 (Step Over) 使用此功能可以在不进入函数内部的情况下逐行执行代码。这有助于观察每一行的效果而不深入探究其调用细节。按下 Shift+F8 可以完成这一动作。 #### 步入 (Step Into) 如果希望深入了解某个方法或函数的工作原理,则可以选择步入命令。这样可以让调试器跳转至被调用的方法定义处继续跟踪变量变化情况。利用F8 键即可达成目的。 #### 跳出 (Step Out) 当前正在查看的是一个子程序内的某部分流程,而想要快速返回至上层调用的地方,那么跳出就是最合适的选择了。此时应该按下 Shift+F9 完成相应指令。 ```json { "version": "0.2.0", "configurations": [ { "name": "(Windows) Launch", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}/build/main.exe" } ] } ``` 上述 JSON 片段展示了如何为 C++ 项目构建基本的调试配置文件片段。实际应用中需依据具体编程语言调整字段值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值