中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

DPU调试器运行/调试

编译调试工具支持基于鲲鹏平台进行DPU调试,实现DPU XDB(X Debugger)调试能力。XDB是针对DPU的调试工具,提供用户在CPU上通过GDB调试微码程序,查看寄存器、局部变量、Spram、线程变量、调用栈,设置断点、监视等能力。

前提条件

  • DPU调试环境(XDB工具)请联系华为技术支持获取;
  • 兼容VS Code的最低版本为1.60.0;
  • 兼容C/C++插件的最低版本为1.7.0;
  • 请使用安装有DPU网卡的服务器;
  • 调试前程序已完成编译;
  • 调试前远程服务器已安装 GDB

操作步骤

  1. 请准备已编译好的二进制文件(sim.elf),在远程主机上执行XDB二进制,会默认侦听在2048的TCP端口,在XDB上也可以指定不同的cardID和端口号。
    图1 执行XDB二进制
    图2 指定不同的cardID和端口号
    • XDB扩展了GDB的能力。
    • XDB使用方式和GDB使用方式基本一致,主要区别在于XDB不能控制程序执行,需要用户提前打断点并通过db或者报文方式唤醒微码线程处理,进入微码后在断点处程序停止。然后可以查看寄存器、spram、局部变量等调试信息,也可以单步继续往下执行。
    • 目前DPU调试依赖提供的sim.elf二进制文件,如果想要支持所有的调试功能,必须提供一个带“-g”编译选项的sim.elf二进制文件。
  2. 单击左侧树快捷功能区按钮,或单击“开发”选择编译调试下方的“调试”,打开调试页面,选择“DPU调试器”,配置DPU调试参数。如图1所示。
    图3 DPU调试器
    表1 DPU调试器参数说明

    参数

    说明

    类型

    类型可选:

    • 通用应用
    • HPC并行应用
    • CUDA应用
    • 安全应用
    • DPU调试器

    远程服务器配置

    进行调试的远程服务器。

    端口号(可选)

    服务器的端口号,默认为2048。

    应用程序

    远程服务器上进行调试的应用程序的完全路径。指定为sim.elf二进制。

    工作目录(可选)

    远程应用程序的工作目录。

  3. DPU调试器调试参数保存后,配置的参数会自动写入launch.json文件中,其中“postRemoteConnectCommands”参数如下所示:
     "postRemoteConnectCommands":[
        {
            "text":"set non-stop"
        },
        {
            "text":"target retome :2048"
        }   
    ]

    non-stop是GDB支持的一种多线程调试方式,当某一线程停止时,不影响其他线程的继续运行。

    目前XDB只支持non-stop模式,而GDB默认是all-stop调试模式。

  4. 单击“开始调试”,跳转到“运行和调试”窗口,左侧树显示变量、监视、断点和调用堆栈信息,右侧显示源码以及调试按钮。如图4所示。
    图4 调试界面

    启动DPU调试器后,会提示出现异常,是因为在DPU上的都是硬件线程,无法自行启动,这时需要启动一个dummy线程来进行打断点操作。

    表2 调试按钮操作描述

    操作

    操作描述

    继续

    点击执行到下一个断点

    暂停

    点击中断正在执行的程序

    单步跳过

    点击执行到下一行

    单步调试

    点击步入函数

    单步跳出

    点击步出函数

    重启

    点击后停止调试

    停止

    点击后停止调试

    鼠标移动到调试按钮左侧区域,点击鼠标可以移动调试按钮到其他地方。

  5. 单击行号处的红点打上断点,单击执行到当前断点;单击执行到下一行,用户可根据调试需求进行调试。
    图5 执行调试
  6. 若需要切换线程进行调试,需要在后端服务器上发送报文信息,发送后会在调用堆栈处增加一个线程,可进行线程切换。
    图6 发送报文
    图7 多线程切换
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词