代码调试

代码调试使用对应语言的调试方法即可,C++使用gdb,Python使用pdb。

GDB调试方法

C++调试使用GDB即可,在调试前,需要将对应的软件编译为DEBUG版本。

编译debug版本

使用CMake的编译参数,编译为DEBUG版本。

mkdir build  
cd build  
cmake -DCMAKE_BUILD_TYPE=Debug ..  
make -j32

配置调试流程图

配置构造一个简单的flow流程图,确保被调测组件能被调用。

启动调试

若是调试功能单元,可以使用ModelBox Tool辅助调试。

GDB命令

gdb modelbox-tool
set args  -verbose -log-level info flow -run [path/to/graph.conf]
b [some-func]
r

上述命令意思为:

  • 使用gdb启动modelbox-tool
  • 设置运行参数-verbose -log-level info表示显示日志,及设置日志级别
  • flow -run [path/to/graph.conf]表示运行的调测流程图。
  • b [some-func]对指定的函数进行断点。
  • r 运行命令

注意:如果使用镜像开发,gdb提示无权限,则需要使用特权容器,具体参考这里的gdb调试设置

vscode

vscode调试,可以先下载GDB插件,再配置调试文件.vscode/launch.json,设置programargs两个配置项如下。

"program": "modelbox-tool",
"args": [
    "-verbose",
    "-log-level",
    "info",
    "flow",
    "-run",
    "[path/to/graph.toml]"
],

设置完成后,使用vscode的F5功能键进行调试

Python调试方法

Python调试时,则需要先设置环境变量MODELBOX_DEBUG_PYTHON=yes后,直接使用IDE调试,其调试方法和标准的Python脚本类似。

环境变量可通过Python脚本,或启动进程前的shell命令设置。

  • Python中设置启用
import os
# 设置环境变量
os.environ['MODELBOX_DEBUG_PYTHON']="yes"
# 执行流程图
flow = modelbox.Flow()
...
  • 环境变量中启用
export MODELBOX_DEBUG_PYTHON=yes

Python功能单元调试

Python代码编写的功能单元需要从Python启动后,设置上述环境变量才能调试。但ModelBox也提供了专门用于调试Python功能单元的命令modelbox-python-debug

具体操作方法为:

  • IDE或调试工具设置启动程序为modelbox-python-debug;
  • modelbox-python-debug启动toml文件的流程图。 modelbox-python-debug --flow [path/to/toml]
  • IDE或调试工具打断点,启动调试。

Vscode调试

vscode调试,可以配置调试文件.vscode/launch.json,设置programargs两个配置项如下。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: modelbox",
            "type": "python",
            "request": "launch",
            "program": "/usr/local/bin/modelbox-python-debug",
            "args": [
                "--flow",
                "[/path/to/toml]"
            ],
            "console": "integratedTerminal"
        }
    ]
}

[/path/to/toml]替换为实际的toml文件路径,并对需要调试的Python功能单元设置断点。设置完成后,使用vscode的F5功能键进行调试。

注意: 若启用失败,则需要先安装pydevd包。

pip install pydevd
©2022 ModelBox Team all right reserved,powered by Gitbook文件修订时间: 2022-11-18 01:21:29

results matching ""

    No results matching ""