You can use the following process to debug the system in software emulation for
an embedded processor platform, such as a
UltraScale+™ MPSoC ZCU102 or ZCU102. This process
launches a new terminal that allows for
gdb commands to
be used, as well as visual of the files for code stepping.
- After completing the
sw_emubuild process, launch the QEMU emulation environment with debug using the following command from your build directory:
./emulation/launch_sw_emu.sh -kernel-dbg true
./emulation is the
output directory of the
-kernel-dbg truesets up the emulator to run
gdbat the execution of the application kernels (PL, AI Engine).
- ./emulation is the output directory of the
- As described in Running Emulation on an Embedded Processor Platform,
run the following commands in the QEMU shell once you see the
mount /dev/mmcblk0p1 /mnt cd /mnt export LD_LIBRARY_PATH=/mnt:/tmp:$LD_LIBRARY_PATH export XCL_EMULATION_MODE=sw_emu export XILINX_XRT=/usrTip: There might be additional steps required if your design incorporates AI Engine kernels. For more information, refer to the AI Engine Tools and Flows User Guide (UG1076).
- Run the PS application from the QEMU environment. For example:
Launching the host application also launches
gdbin a separate terminal to let you debug the PL and AI Engine kernels in the .xclbin. In
gdb, you can perform all the typical activities to set up your debug environment, such as breakpoint insertion for PL and AI Engine kernels, and step or continue commands to walk through the code.
- You can set a breakpoint on either function name or line number in
gdbusing this syntax. During execution, when it reaches that breakpoint,
gdbautomatically opens the file with the right line number, as long as it can locate the sources. For example,
break <filename>:<function name> break <filename>:<line_num >
Also, you can set a breakpoint for a kernel using a command such as
b Vadd_A_B. This command pauses .xclbin execution in
gdbat the invocation of the specified kernel, in this example the
Vadd_A_Bkernel. In an .xclbin file with multiple kernels, you can add breakpoints for all or specific kernels.Note: When you set the breakpoint in
gdb, you will see a note that the function is not defined and prompting you to make the breakpoint pending on future load. Enter y to proceed.
- In the
gdbterminal, press r to run the application and step through the code, set variable values, and continue.Tip: To use a Textual User Interface (TUI) in
gdb, use the following keystrokes:
- If the TUI is displayed, the source code for the kernel is displayed, as well as the path to the source code defined in the .xclbin by the software emulation build process.
- Step through the code, or press c to let the code run through to completion. The results of your software emulation are displayed in the original command terminal.
- Press q to quit
- Close the