Intel® Distribution for GDB* 2022 Release Notes

ID 759387
Updated 9/1/2022
Version 2022.2
Public

author-image

By

 

Where to Find the Release

Intel® Distribution for GDB* is available as part of the Intel® oneAPI Base Toolkit. To download the Intel® oneAPI Base Toolkit 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.

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 DPC++ program in the same 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, GPU, or FPGA-emulation device.
  • The debugger is based on the GDB* 11.2 release.

Key Capabilities

  • Support for Intel® Iris® Xe Graphics.
  • 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 in the instruction history and function-call history.
  • Displaying the shadow stack backtrace and Intel® Control-flow Enforcement Technology (Intel® CET) debugging status information.

System Requirements

Documentation

 

  • Various bug fixes and improvements
  • Bumped GDB version to 11.2. See changes here.
  • Introduced set|show suppress-cli-notifications commands to suppress notifications to be printed out. Check help suppress-cli-notifications for 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 until command when debugging the same executable within a single session. Now, until is interpreted within the current program space.
  • Fixed a crash in gdbserver-gt when 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.
  • Added the info devices command. 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-functions commands to step through functions marked as trampolines in the debug info. Check help skip-trampoline-functions for more info.
  • Fixed a crash in GDB when gdbserver-gt terminates abruptly during the debug session.
  • Fixed an issue with function calls in expression evaluation for DG2.
  • Various bug fixes and performance improvements.

Changes in 2022.3.1 Release 

  • Intel® Distribution for GDB* 2021.7.1 has been updated to include functional and security updates. Users should update to the latest version as it becomes available.

 

Known Issues and Limitations

  • Intel® Distribution for GDB*, version 2022.3 does not include the latest functional and security updates. Intel® Distribution for GDB*, Version 2023.0 will include additional functional and security updates. Customers should update to the latest version as it becomes available.

  • For OpenMP* #pragma omp single blocks in C++, private variables cannot be inspected and breakpoints may occasionally not hit the expected line.

  • During the expression evaluation, an element of an accessor object cannot be accessed using the multi-dimensional access syntax. See an error example below:
(gdb) print anAccessor[5][3][4]
Cannot resolve function operator[] to any overloaded instance


You can use the id object instead:

(gdb) print workItemId
$1 = cl::sycl::id<3> = {5, 3, 4}
(gdb) print anAccessor[workItemId]
$2 = 1234

 

  • With kernels older than 5.9, hanging behavior may be seen for devices with id 0x3E98. The GPU can be programmatically reset for recovery.

 

On GPU devices:

  • Inferior calls (invocation of kernel functions from inside the debugger for expression evaluation) are not supported.
  • 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.
  • For Gen12 devices, the number of SIMD lanes is incorrectly shown.
  • Ahead-of-time compilation is supported but the code must be built with the -cl-kernel-debug-enable flag.
  • Inspecting shared-local-memory (SLM) is 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 SIGSEGV command.
  • Restarting the debugged program while the current context is the host inferior may cause GDB and gdbserver-gt to become out-of-sync. This may require a complete restart of the debugging session to regain the full debugging ability.
  • backtrace may fail with error PC not saved, when inside OpenMP parallel for loop with a large number of iterations. To get proper backtrace, limit the number of parallel threads in the loop by using num_teams and thread_limit.

On CPU and GPU devices:

  •  Debugging OpenMP kernel code for Fortran (#pragma omp target) is not supported.

Release Notes for Windows* OS

Major Features

  • Support for debugging a kernel offloaded to a CPU, GPU, or FPGA-emulation device.

  • Integration into Microsoft Visual Studio* interface to enable GPU remote debugging. This feature allows you to debug the "host" portion and the "kernel" of a DPC++ program in the same VS remote debugging session. 

Key Capabilities

  • Inserting a breakpoint inside a kernel and stopping when the breakpoint is hit by a thread
  • Inspecting local variables
  • Source-level stepping
  • Backtracing function calls
  • Examining threads
  • Reading registers
  • Disassembling
  • Automatic launch of gdbserver-gt
  • Support for debugging OpenCL and DPC++ programs
  • Support for debugging OpenMP* C++ kernel code for CPU and GPU offloads.
  • Ability to connect and debug a target outside the domain network.

System Requirements

You can download the latest driver at Intel® Graphics - Windows® 10 DCH Driver.

Documentation

To set up the debugger, refer to the Get Started with Debugging Data Parallel C++. If you are more comfortable with the video format, refer to the getting started video.

  • Removed support for Visual Studio* 2017.
  • Addressed the issue where the user was unable to connect and debug a target outside the domain network.
  • GPU thread names are now accessible in the application debug process in Visual Studio Code* (VS Code).

Changes in 2022.3.1 Release 

  • Intel® Distribution for GDB* 2021.7.1 has been updated to include functional and security updates. Users should update to the latest version as it becomes available.

Known Issues and Limitations

On GPU devices:

  • The target system might lose the network connection after the debugging session is started. In this case, reboot the target system.
  • Microsoft Visual Studio* interface does not support viewing SIMD lanes.
  • In Microsoft Visual Studio*, the following message might be displayed "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 the 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.
  • After hitting a breakpoint defined before a kernel, not all threads hit a breakpoint defined inside the kernel.
  • Single steps on the last line of a kernel lead to the termination of the program being debugged.
  • For debugging on a GPU, you should use a grid size of 256 or fewer work items.
  • Inferior calls (invocation of kernel functions from inside the debugger for expression evaluation) are not supported.
  • Kernel functions are inlined by the compiler. Breakpoints on calls to inlined functions may not be hit. Try placing breakpoints before the call or inside the called function​.
  • For OpenMP you need to start the gdbserver-gt manually with IPv4:
$ gdbserver-gt --hostpid=1 --attach 127.0.0.1:1234 1
  • backtrace may fail with error PC not saved, when inside OpenMP parallel for loop with a large number of iterations. To get proper backtrace, limit the number of parallel threads in the loop by using num_teams and thread_limit.
 

On CPU and GPU devices:

  •  Debugging OpenMP kernel code for Fortran (#pragma omp target) is not supported.
  • For OpenMP #pragma omp single blocks in C++, private variables cannot be inspected and breakpoints may occasionally not hit the expected line.

On FPGA emulator devices:

  • For debugging on FPGA emulator, ahead-of-time (AoT) compilation is not supported. Ensure that in Project Properties > DPC++   Enable FPGA Workflows is set to no.

  • For debugging on an FPGA emulator, no support for OpenMP.

On CPU devices and FPGA emulator devices:

  • It is recommended to disable the GPU debugger for smooth debugging on CPU and FPGA emulator devices.

Previous oneAPI Releases

Notices and Disclaimers

Intel technologies may require enabled hardware, software or service activation.

No product or component can be absolutely secure.

Your costs and results may vary.

© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.