-
Notifications
You must be signed in to change notification settings - Fork 12
Debugging
HemeLB contains some code to support debugging MPI parallel programs without having a parallel debugger. This is enabled by setting the CMake variable HEMELB_BUILD_DEBUGGER
to ON
and HEMELB_OPTIMISATION
to -g -O0
(or a higher level). You then must run the executable with the option -debug 1
.
On application startup, it will start a shell for each rank that has been run (in tabs in your terminal) and attach your system default debugger to the processes that you have mpirun
. The processes will automatically resume.
To stop program execution and break, get the debugger (hemelb::debug::Debugger::Get()
) and then call its BreakHere()
method. You can do this conditionally, e.g.
if (value > it_should_be)
debug::Debugger::Get()->BreakHere();
And those ranks where the condition is true will stop execution and drop into the debugger.