I usually just use gdb and print statements.  They may not be the most productive tools, but they usually do the job. But in this case the graph is complicated (double backward + inplace operations on views), so I debugged for an afternoon and put it down for more urgent tasks. I definitely still plan to keep trying.
About the in-place operation on views. We have a (somewhat complicated) logic on how the graph should be updated in this case. If you are interested, here is the original proposal https://github.com/pytorch/pytorch/issues/3313 5, and here is the patch https://github.com/pytorch/pytorch/pull/3384 5, which has evolved beyond the proposal a bit.