When developing massively parallel applications on the GPU, you need a debugger capable of handling thousands of threads running simultaneously on each GPU in the system.  CUDA-GDB delivers a seamless debugging experience that allows you to debug both the CPU and GPU portions of your application simultaneously.

If you already use GDB to debug your CPU application then getting started with CUDA-GDB involves learning just a few additional debugger commands. Just like GDB, CUDA-GDB provides a console-based debugging interface you can use from the command line on your local system or any remote system on which you have Telnet or SSH access. If you prefer debugging with a GUI frontend, CUDA-GDB also supports integration with DDD, EMACS, Nsight Eclipse Edition or the new Nsight Visual Studio Code Edition

Note that NVIDIA® CUDA Toolkit 11.0 (and later) no longer supports development or running applications on macOS. While there are no tools which use macOS as a target environment, NVIDIA made the macOS host version of cuda-gdb available up to CUDA 12.4. However, the macOS host versions were dropped as of CUDA 12.5.

       

CUDA-GDB Feature Set Overview

CUDA-GDB supports debugging of both 32 and 64-bit CUDA C/C++ applications. It provides full control over the execution of the CUDA application including breakpoints and single-stepping. You can examine variables, read/write memory and registers and inspect the GPU state when the application is suspended. Third party developers can leverage CUDA-GDB powerful features directly, see CUDA Samples, which can be downloaded with the latest CUDA Toolkit .


(Click to zoom)

CUDA-GDB on Linux
> Debug CUDA C and C++ applications directly on the GPU
> Simultaneously debug on the CPU and more GPUs
> Debug at either high-level C/C++ source or low-level GPU assembly
> Use conditional breakpoints to identify and correct errors in CUDA code
> Identify memory access violations
> Automatically break on every kernel launch
> Use the autostep mode to detect errors more precisely
> Debug multiple applications simultaneously using multiple sessions
> Selectively assert in CUDA code
> Dynamic Parallelism Support
> Inlined Subroutine Support
> Run CUDA-MEMCHECK in integrated mode to detect precise exceptions.


(Click to zoom)

> Kernel launch stack information
> Single-GPU debugging
> Long-running kernel debugging
> Remote debugging for x86 and ARM

Developers should be sure to check out NVIDIA Nsight for integrated debugging and profiling. Nsight Eclipse Edition and Nsight Visual Studio Code Edition for Linux support, and Nsight Visual Studio Edition for Windows.

CUDA Debugging on Clusters

NVIDIA partners with the following vendors to provide cluster-class debugging solutions for CUDA applications:

CUDA-GDB Documentation

Questions on CUDA Tools

If you encounter difficulty with any of the CUDA Tools or have more questions please contact the NVIDIA tools team at cudatools@nvidia.com .