@JeremyCherfas An IDE that understands code references can help a lot with chasing those down. That helps you map out data flow and the effect of any changes.
For crashers or understanding a failing computation, a good tool to have is a debugger. That should let you set a breakpoint / trigger the debugger, which halts the program and lets you nose around in the memory, call functions, etc. Basically, stop the world and have a look around. Often you can arrange to have it run under the debugger and automatically stop when a crash happens anywhere or exception gets thrown.