2023-02 Debugging Tools and Techniques
Channel: Toronto Java Users Group
Date: 2023-03-03

Presentation by Angelo Genovese and Jonathan Fuerth

The reality of being a programmer is that you are in problem solving mode most of the time. Another reality of being a programmer is that you rely on a wide variety of libraries and helper applications which are not all in your primary day-to-day language. Either way, error handling and reporting can be cryptic or nonexistant. What can you do when things go wrong and the error messages aren't helping?

In this talk, we will walk through some debugging problems and demonstrate some tools and techniques that might just help get you out of a bind in the future!

Slides are available here:
https://docs.google.com/presentation/d/1HFGdPsEm3nq9GMR-RnAOPSFPP8SukC05NUgovQ_jDQ4/edit#slide=id.g1f341698c03_0_52

Julia Evans - A debugging manifesto:
https://jvns.ca/blog/2022/12/08/a-debugging-manifesto/

0:45 Techniques
0:58 Validate your hypothesis
2:13 Find a "pinch point" and monitor it
3:39 Try it on a different machine
9:13 Be wary of time and date problems
12:02 More excellent strategies
16:22 More excellent strategies
22:19 Tools
23:00 Inspect plaintext network traffic: HTTP request
30:19 Inspect plaintext network traffic: database interactions
31:53 Inspect HTTPS Requests
36:46 Debugging a process outside your IDE
40:51 Getting a Thread dump from a running process
45:59 System Interactions
54:29 What’s taking so long/much
1:03:30 Digging up DNS issues
1:06:44 Talk directly on “raw” sockets
1:08:07 Talk directly on TLS sockets
1:08:29 Inspect TLS handshake and certificate exchange
1:09:27 Summary