The multi-target feature enables debugging of multiple different targets
in a single debugging session.
With this feature, you can define breakpoints inside and outside the
kernel to debug the host portion of the program. For example, define two
breakpoints and run the target as follows:
Breakpoint 1 at 0x405800: file /path/to/array-transform.cpp, line 56.
Breakpoint 2 at 0x403e13: file /path/to/array-transform.cpp, line 83.
[Switching to Thread 1.1073741824 lane 0]
Thread 2.1 hit Breakpoint 1, with SIMD lanes [0-7], main::$_1::operator()[...]
56 int element = in[index]; // breakpoint-here
Now you are inside the kernel (in this case, the kernel is running on
the GPU). The context is Thread 2.1, lane 0.
Disable the breakpoint at line 56 and continue:
[Switching to Thread 0x7ffff7fd9780 (LWP 19604)]
Thread 1.1 "array-transform" hit Breakpoint 2, main (...)
83 cout << "success; result is correct.\n";
This time the stop event is received from the host. The context is
automatically switched to Thread 1.1. You can investigate the host-side
values as shown above.