您可以使用以下过程,在
Alveo™
加速器卡的软件仿真中调试系统。此过程会启动一个新终端,以允许使用 gdb
命令并显示源文件用于单步执行代码。
- 构建主机和内核时,使用
-g
或--debug
选项来完成sw_emu
构建进程。 - 在运行应用之前,向 xrt.ini 文件添加
kernel-dbg=true
选项:[Emulation] kernel-dbg=true
- 如 在数据中心加速器卡上运行仿真 中所述,将 XCL_EMULATION_MODE 设置为
sw_emu
:setenv XCL_EMULATION_MODE sw_emu
- 使用 .xclbin 文件启动主机应用:./host.exe
a.xclbin
启动主机应用还会在单独的终端内启动
gdb
,以允许您在 .xclbin 中调试 PL 内核。在gdb
中,您可以执行所有典型活动以设置自己的调试环境,例如,为 PL 内核插入断点,单步或继续执行各项命令以执行完整代码。 - 在
gdb
中,您可使用该语法在函数名称或行号上设置断点。执行期间,当gdb
到达此断点时,它只要能够找到源代码,就会自动打开含正确行号的文件。例如:break <filename>:<function name> break <filename>:<line_num >
此外,您可以使用
b Vadd_A_B
等命令来为内核设置断点。此命令会在调用指定内核时,在gdb
中暂停执行 .xclbin,在此处示例中,指定内核为Vadd_A_B
内核。在含多个内核的 .xclbin 文件中,可以为所有内核或部分特定内核添加断点。注释: 在gdb
中设置断点时,您会看到一条有关函数未定义的注释,它会提示您在后续加载时暂挂断点。请输入y继续。 - 在
gdb
终端内,按r以运行应用并单步执行代码、设置变量值,然后继续。提示: 要在gdb
中使用文本用户界面 (Textual User Interface, TUI),请使用以下按键:Ctrl+x Ctrl+a
- 如显示 TUI,则会显示内核的源代码,和指向 .xclbin 中软件仿真构建进程所定义的源代码的路径。
- 单步执行代码,或者按c让代码运行直至完成。软件仿真结果会显示在原始命令终端内。
- 按q退出
gdb
。 - 关闭
gdb
命令终端。