What can I help you with?
DOCA Documentation v3.0.0

DPL Debugger

This section describes the DPL Debugger Tools, used to debug pipeline packets that DPL programs are processing in NVIDIA® BlueField®.

The DPL Debugger is a GUI application that can run a debug session or open a pre recorded (through dpl_nspect debug ) debug session file.

Debug session shows the flow of network packets throughout a DPL program's pipeline and lets the developer trace the details of each packet's course. See the documentation on the extern function nv_send_debug_pkt.

Note

The current version of the debugger will only display debug packets received by the DPU (Rx path, or packets from primary wire port (P0) in the Network to Host direction).

Running dpl_debugger.sh with no additional arguments will open the GUI application.

Opening a pre recorded debug session file

The pre recorded debug session file is a tar.gz archive and is the output of a recorded debug session created with the dpl_nspect debug command.

Option 1: Specify the file to open when running the debugger from the command line.

Copy
Copied!
            

dpl_debugger.sh hello_packet.tar.gz

Option 2: Click the File Open Debug Session File and select your file.

image-2025-4-22_9-39-56-version-1-modificationdate-1745303996407-api-v2.png

image-2025-4-22_9-48-45-version-1-modificationdate-1745304524927-api-v2.png

Starting a debug session

Running a debug session from the debugger is possible and has the advantage of processing and inspecting the packets at runtime.

The following GIF demonstrates how to start a debug session, using scapy we sent the following packet.

  send_hello_packet

Using scapy's interactive shell we can run the following code to send a packet.

On our machine, we have port p1 connected via loopback to p0.

Copy
Copied!
            

from scapy.layers.inet import TCP from scapy.layers.inet6 import IPv6 from scapy.layers.l2 import Ether from scapy.packet import Packet, Raw def hello_packet_packet() -> Packet: return (Ether(src="00:11:11:11:11:11", dst="ff:ff:ff:ff:ff:ff") / IPv6(src='::1', dst='::1') / TCP(sport=100, dport=100, seq=1001, flags='P') / Raw(load=b'This is a hello_packet packet payload.')) sendp(hello_packet_packet(), "p1", count=1)

debugger-demo-version-1-modificationdate-1745313654890-api-v2.gif

Packet List

On the left pane users can see the Packets list. The packet list exposes the following fields:

  • Date Time – the time it entered the DPL pipeline.

  • Time Since Start – time since the first packet entered the DPL pipeline.

  • Size – packet size

  • Ingress Port

  • Protocol

image-2025-2-2_17-19-42-version-1-modificationdate-1742317688933-api-v2.png

Filter

To filter out packets use the fields at the bottom left of the screen.

For example: "packet ID is not 0".

Press the + button and then the Apply button

image-2025-1-20_18-1-46-version-1-modificationdate-1742317690960-api-v2.png

Press the "Clear All" and then "Apply" buttons.

A converse filter example: "packet ID is 0" again pressing the + and then the Apply buttons

image-2025-1-20_18-2-49-version-1-modificationdate-1742317690797-api-v2.png

Parser Graph

The middle section of the screen there is the parser graph

image-2025-1-20_18-7-17-version-1-modificationdate-1742317690647-api-v2.png

It outlines the route a packet can take. The purple nodes (such as "ethernet" above) indicate the node it traversed. It consists of both flex nodes which the DPL programmer instigated and static (fixed) nodes which are inherent part of the hardware.

Debug Points

Selecting a packet from the Packets list will display the selected packet's pipeline stages.

Each row in the pipeline stages correlates to a single source location point in the DPL program code.

Cells in the table are interactive, and selecting a cell will mark the relevant source location when applicable.

image-2025-2-2_17-20-26-version-1-modificationdate-1742317688710-api-v2.png

Variables

Selecting a pipeline stage (a single cell or the whole row) will display variable information in two different tabs.

  • The "Variables" tab shows DPL variables defined in the program and their values in the current pipeline stage.

  • The "Raw" tab shows a deeper dive into the low level variables (e.g., registers, samplers, etc.)

image-2025-1-20_18-6-39-version-1-modificationdate-1742317690267-api-v2.png

Source Code

Selecting a cell in a pipeline stage will open the DPL program in a new tab, marking the relevant source location when applicable.

The debugger seeks the DPL source file using the search paths defined in the Settings or by browsing manually for the file.

image-2024-4-19_11-56-52-version-1-modificationdate-1742317690070-api-v2.png

Log

The log window pane is on the left side. It shows the internal logs of the DPL Runtime daemon (Currently we aren't sending any log messages).

image-2024-4-19_12-27-16-version-1-modificationdate-1742317689893-api-v2.png

System Info

image-2025-2-18_17-11-16-version-1-modificationdate-1742317688473-api-v2.png

Packet Dissector

Selecting a pipeline stage will dissect the packet.

image-2025-1-20_18-11-14-version-1-modificationdate-1742317689477-api-v2.png

Hex Dump

Selecting a pipeline stage will show a raw hex dump of the packet.

image-2025-1-20_18-11-34-version-1-modificationdate-1742317689303-api-v2.png

Options

The File->Preferences menu will open the Preferences window.

Here you can set different settings related to the debugger and the debug session.

image-2025-1-20_18-38-15-version-1-modificationdate-1742317689143-api-v2.png

© Copyright 2025, NVIDIA. Last updated on May 22, 2025.