Where to Find the Release
Intel® Distribution for GDB* is available as part of the Intel® oneAPI Base Toolkit (Base Kit) or may also be downloaded as standalone component for any other Toolkit installation. To download the Base Kit and learn more about toolkits, visit the Intel® oneAPI Toolkits main page.
Visit Intel® oneAPI Toolkit and Component Versioning Schema for more information about semantic versioning and how it is used with Intel® oneAPI.
Deprecation Notice
- Support for GDB IDE extensions for both Microsoft Visual Studio* and Microsoft Visual Studio Code* has been deprecated as of the Intel® oneAPI Toolkit 2025.2.0 release. These components will be removed in a future release.
Release Notes for Linux* OS
Major Features
- Multi-target: The debugger can orchestrate multiple targets of different architectures. This feature allows you to debug the "host" portion and the "kernel" of a SYCL* program in the same Intel® Distribution for GDB* session.
- Auto-attach: The debugger automatically creates an inferior that attaches itself to the Intel® Graphics Technology target to be able to receive events and control the GPU for native debugging.
- Thread SIMD lanes: The debugger displays SIMD lane information for the GPU threads on the command line interface. You can switch between lanes.
- Support for debugging a kernel offloaded to a CPU or GPU device.
- The debugger is based on the GDB* 16.3 release.
Key Capabilities
- Support for Intel® Iris® Xe Graphics.
- Support for Intel® Core™ Ultra processors (Series 2) and Intel® Arc™ B-Series Graphics on Linux*.
- Automatically detecting JIT-compiled, or dynamically loaded, kernel code for debugging.
- Defining breakpoints (both inside and outside of a kernel) to halt the execution of the program.
- Inspecting and changing the values of variables in the application.
- Inspecting and changing register values.
- Listing the threads; switching the current thread context.
- Listing active SIMD lanes; switching the current SIMD lane context per thread.
- Evaluating and printing the values of expressions in multiple threads and SIMD lane contexts.
- Disassembling the machine instructions.
- Displaying and navigating the function call-stack.
- Source and instruction-level stepping.
- Non-stop and all-stop debug mode.
- Recording the execution using Intel® Processor Trace (Intel® PT).
- Printing of Intel PT PTWRITE payloads and asynchronous events in the instruction history and function-call history.
- Reading and writing Intel® Advanced Matrix Extensions (Intel® AMX) registers.
- Reading and writing of the Intel® CET Shadow Stack Pointer (pl3_ssp) register.
- Reading and writing of the Intel® APX registers (Extended GPRs \$r16 - \$r31) including byte, word and dword pseudo registers.
System Requirements
- General hardware requirements: Intel® oneAPI Base Toolkit System Requirements.
- Specific system requirements: Intel® Distribution for GDB* System Requirements.
Documentation
- To set up the debugger, refer to Get Started with Debugging SYCL*.
- To follow basic debugging scenarios, refer to the Tutorial.
- To see common Intel® Distribution for GDB* commands, refer to the Cheat Sheet.
Changes in the 2025.3 release
- Added support for Intel® Arc Battlemage (BMG-G31) and Intel® Core™ Ultra 3 Processor (Panther Lake)
- The Intel® Distribution for GDB* is now built on the official GDB version 16.3. Developers can now take advantage of all new features, enhancements, and bug fixes from GDB 16.1, 16.2, and 16.3 that are included in this release. For a comprehensive list of upstream changes, see the GDB News.
- A new event `post_attach` is added to the Python API. The event is emitted after execution of the `attach` command, allowing advanced users to run custom Python code immediately after the 'attach' command completes. This feature is unique to this release and is not yet available in upstream GDB.
- Removed suppoer for IDE extensions for both Microsoft Visual Studio* and Microsoft Visual Studio Code*
- Other bug fixes and improvements.
Changes in the 2025.2 release
- The
thread filtercommand now prints thread and SIMD lane ranges instead of individual thread / SIMD lane IDs. - The
thread applycommand now supports GDB's value history and user-defined convenience variables. - Introduced a new MI command
-thread-filterfor filtering threads based on various criteria, including SIMD lanes. It is equivalent to the CLI subcommand-thread-filter, with a minor difference in--all-lanesand--selected-lanesflags. - In non-stop mode the ZE debug API now supports clustered requests that resume the whole slice / subslice / execution unit (EU) of the device node.
- GDB can now set a breakpoint at the beginning of the GPU kernel given its name, even if no debug info is present.
- Added warning message when accessing a register number outside the valid range of the thread's register set.
- Various bug fixes and improvements.
Changes in the 2025.1 release
- Rebased to GDB version 15.2. See the changes here.
- Intel® Distribution for GDB* adds support for Intel® Core™ Ultra processors (Series 2) and Intel® Arc™ B-Series Graphics on Linux*, in addition to the existing Windows support, allowing developers to efficiently debug application code on these new CPUs and GPUs. See [https://dgpu-docs.intel.com/driver/client/overview.html]{.title-ref} for more details.
- Added a 'reason' field to the thread's MI output that maps the stop reason to a string that can be used by MI consumers.
- The
info linecommand now prints all occurrences of the same line, e.g., when using the command on a templated function that is instantiated with different template arguments. - Added the
-shadow-stack-list-framesMI command which allows MI consumers to retrieve the shadow stack backtrace. It is equivalent to the CLI subcommandbacktrace shadowbut supportslow-frameandhigh-frameas command line parameters. - Added a new
thread filtercommand to get a list of filtered thread ids. - Various bug fixes and improvements.
- Improved support for XE2 debugging.
Changes in the 2025.0 Release
- Rebased to GDB version 15.1. See the changes here.
- Added further support for Intel® CET Shadow Stack:
- Introduce a new subcommand of the backtrace command
backtrace|bt shadowto print the shadow stack backtrace. - Added support for the Intel® APX registers (Extended GPRs \$r16 - \$r31) including byte, word and dword pseudo registers, as well as coredump support.
- Defining a breakpoint at a location before a kernel (i.e. inside the host code) no longer causes the breakpoint to be also defined at the start of the kernel.
- In case of a page fault event coming from the GPU, the debugger now displays a warning that the location reported for the signal may be inaccurate.
- Added support for XE2 debugging.
- Enabled GPU inferior calls with the setting 'set unwindonsignal on'.
Changes in the 2024.2 Release
- Rebased to GDB version 14.2. See the changes here.
- Debugging support for Intel MPX has been removed. This includes the removal of
- MPX register support
- the commands
set|show mpx bound - Added further support for Intel® CET Shadow Stack:
return,calland displaced stepping on CALL instructions when debugging programs using CET- pl3_ssp in coredump files
- When recording with Intel® PT, GDB now supports showing asynchronous events in the instruction history and function-call history. This is controlled by the new command
set|show record btrace pt event-tracing. - Added support for stepping inside atomic regions of a GPU kernel, e.g., inside a sequence of
dpasinstructions labeled as "Atomic". - Fixed a problem where stepping over a statement, e.g. with
next, would not stop if the statement was triggering the auto-attach feature.
Changes in the 2024.1 Release
- Added support for reading and writing of the Intel® CET Shadow Stack Pointer (pl3_ssp) register. The following will be added in a future release:
return,calland displaced stepping on CALL instructions when debugging programs using CET- pl3_ssp in coredump files
- Rebased to GDB version 14.1. See the changes here.
- Added global option
set print shadowed on|offto omit shadowed variables for C/C++ and Fortran oninfo locals. By default shadowed variables are printed. - Added support for breakpoints inside atomic regions of a GPU kernel, e.g., inside a sequence of
dpasinstructions labeled as "Atomic". - Added support for debugging GPU kernels in large-grf mode. Large-grf mode allows kernels to run with double the number of GRF registers per thread but only half the number of concurrent threads.
- Various bug fixes, including the following:
- If GDB dies with an internal error or is killed, a gdbserver-ze process is no longer left running in the background.
- A problem that was causing delays in the start-up phase when using the non-stop mode is fixed.
Changes in the 2024.0 Release
- The target ID of a GPU thread is changed to display the Level Zero device thread identifier in the format
ZE s.ss.eu.th, wheresdenotes the slice,ssthe subslice,euthe execution unit, andththe thread. - The "Execution Mask" (
emask) register, which was previously deprecated, is removed. - In inferior calls made during expression evaluation on GPUs, all SIMD lanes except the selected lane are disabled.
- Added a finer control over scheduler locking settings. Check
help set scheduler-lockingto see the new options. - When displaying the PCI location of a GPU device, the domain field is also printed. E.g.:
0000:18:00.0. - The registers of a thread on a GPU are defined in three groups: arf, grf, virtual. Use the
info reg <group>command to list the registers and their values that belong to a particular group. - Performance is enhanced for GPU debugging to improve the debug session startup time and the
info threadscommand in certain scenarios. - Added support for defining watchpoints on tagged data pointers (Intel® Linear Address Masking) on CPUs.
- Various bug fixes, including the following:
- The non-stop mode can be used on systems with multiple (sub)devices.
- Fixed an auto-attach problem that was seen when attaching to a running application before the Intel® oneAPI Level Zero backend is initialized.
- Fixed a problem where a redundant SIGINT event could be shown after a GPU workload has been resumed for stepping.
Changes in the 2023.2 Release
- Removed Eclipse plugin, as Eclipse can now be configured to use gdb-oneapi natively. See Using Eclipse IDE for details.
- Rebased on GDB version 13.1. See the changes here.
- Removed the DCD-based gdbserver target from the code base.
- Improve error messages printing during auto attach for GPU offload debugging.
- Added support for reading and writing shared local memory (SLM) via
sycl::local_accessorand generic pointers. - Added convenience variables for workitem coordinates:
$_thread_workgroup,$_workitem_local_id,$_workitem_global_id. - Various bug fixes and improvements, including the following:
- Fixed a problem where a thread could run until termination and become unavailable as a result of executing the
nextcommand whenscheduler-lockingwas set toofforreplay. - Reduced the overhead of the
info threadscommand. The improvement is applicable when frame argument values are not needed to be printed. This can be achieved by changing the setting globally usingset print frame-arguments none, or by usingwith print frame-arguments none -- info threadsfor a single command execution.
Changes in the 2023.1 Release
- Added the
set|show suppress-mi-notificationscommand which guards suppression of some MI notifications. Checkhelp set|show suppress-mi-notificationsfor more info. - Added the
--stoppedoption to the-thread-infoMI command to print stopped threads only. - The Array Transform and Jacobi samples of the debugger now use the
ONEAPI_DEVICE_SELECTORenvironment variable to select a device instead of a command-line argument. - The "Channel Enable" (
ce) register is now available in the register list of the GPU target. The "Execution Mask" (emask) register is deprecated;ceshould be used instead. - Various bug fixes and performance improvements, including the following:
- Fixed occasionally reporting an arbitrary thread as unavailable after resuming the debuggee program.
- Fixed stopping on module load events using the
set stop-on-solib-events 1command, which allows the user to inspect the newly loaded kernel prior to submission of a workload. - Fixed a
gdbserver-zeassertion violation due to a race condition innon-stopmode. - Improved performance of when hitting a breakpoint with a large number of threads and resuming these stopped threads.
- Improved performance for single-stepping statements via the
nextandstepcommands. - Fixed GDB prompt being displayed prematurely when attaching to a live process before the Intel® oneAPI Level Zero backend is initialized.
- Fixed SIMD wildcard range in
thread apply <thread range>:*: unavailable threads are ignored. - Renamed labels of unavailable threads in
info threadsfrom(inactive)to(unavailable).
Changes in the 2023.0 Release
- Switched from DCD debug driver to Intel® oneAPI Level Zero (Level Zero) (currently only supporting discrete GPUs).
- Bumped GDB version to 12.1. See changes here.
- Added a new option
-stoppedtoinfo threadsto print stopped threads only. - Added the
--qidoption to the-thread-infoMI command to print qualified-id of threads. - Fixed issue with corrupted debug sessions after detaching from GPU.
- Improved error reporting, debugging experience and usability overall.
- Various bug fixes and performance improvements.
Changes in the 2022.3 Release
- Added the
info devicescommand. This feature displays additional information about Intel® Graphics Technology devices currently used by the debugged program. - Fixed and improved the debugger behavior for when the debugged program is restarted while stopped inside the GPU workload.
- Introduced
set|show skip-trampoline-functionscommands to step through functions marked as trampolines in the debug info. Checkhelp set|show skip-trampoline-functionsfor more info. - Fixed a crash in GDB when
gdbserver-gtterminates abruptly during the debug session. - Fixed an issue with function calls in expression evaluation for DG2.
- Various bug fixes and performance improvements.
Changes in the 2022.2 Release
- Bumped GDB version to 11.2. See changes here.
- Introduced
set|show suppress-cli-notificationscommands to suppress notifications to be printed out. Checkhelp set|show suppress-cli-notificationsfor more info. - Added support for function calls in expression evaluation on GPU targets.
- Fixed an issue with loading shared library symbols for Intel® Graphics Technology remote target on Windows*.
- Fixed an issue with the
untilcommand when debugging the same executable within a single session. Now,untilis interpreted within the current program space. - Fixed a crash in
gdbserver-gtwhen attempting to continue debugged process when it has died. - Fixed an error when attempting to re-run the executable while the offloaded GPU kernel inferior is the current context.
- Intel® Graphics Technology specific performance improvements.
- Stability improvements.
- Deprecated the printing of Intel® TSX abort reasons (
info tsx-abort-reason). This feature will be removed in the 2022.3 release. - Added DG2 support (beta). Known issues:
- Conditional breakpoints may not work as expected.
- Function calls in expression evaluation do not work correctly.
- Fixed asynchronous MI mode, now one can use
set mi-async on.
Changes in the 2022.1 Release
- Various bug fixes and improvements.
Known Issues and Limitations
- [Intel(R) Distribution for GDB*, version 2025.3.0] does not include the latest functional and security updates. [Intel(R) Distribution for GDB*, Version 2025.3.1] is targeted to be released in [January 2026] and will include additional functional and security updates. Customers should update to the latest version as it becomes available.
- For OpenMP*
#pragma omp singleblocks in C++, private variables cannot be inspected and breakpoints may occasionally not hit the expected line. - With kernels older than 5.9, hanging behavior may be seen for devices with id 0x3E98. The GPU can be programmatically reset for recovery.
- Compilers may emit trampoline functions, which do not exist in the source code, but can be visible in the
backtraceandstepcommands. - The Intel® Distribution for GDB* from 2025.0 onwards uses the latest Python version, so it may result in some syntax warnings inside python scripts on your system. The environment variable PYTHONWARNINGS=ignore can be used to control the display of Python warnings.
On GPU devices
- GDB might occasionally return the message "Cannot execute this command while the target is running". Ignore the message as it should not affect further debugging.
- If you define a breakpoint at a location before a kernel (inside the host code), the breakpoint is also defined at the start of the kernel. This is similar to defining a breakpoint at a comment line or an empty line: in these cases, the breakpoint is defined for the next source line.
- If the currently selected SIMD lane of a thread becomes inactive, GDB might silently switch the focus to the first active SIMD lane in this thread.
- Dereferencing
sycl::multi_ptris not supported. - Applications that use unified shared memory (USM) may appear as raising a SIGSEGV when a USM-allocated memory is being accessed. This is a mechanism used by the runtime to trigger memory migration. In such cases, sending the signal back to the application resumes the program. For this, use GDB's
signal SIGSEGVcommand. - While a workload submitted to a subdevice of a GPU is being debugged, no other workload can be executed or debugged on the same subdevice.
- The debugger does not support disabling of displaced-stepping before the start of a GPU kernel.
- Attaching to a running GPU process in all-stop mode is currently unsupported on XE2.
- Debugging a SYCL GPU application is not supported on Battlemage GPUs where eu_count is 288.
Previous oneAPI Releases
- 2021 Release notes are available: Intel® Distribution for GDB* 2021 Release Notes