java debugging tips @oredev
TRANSCRIPT
![Page 1: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/1.jpg)
Martin Skarsaune
Senior Developer and Co-Owner@MSkarsaune
Java
Debugging
Tips
高馬丁
![Page 2: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/2.jpg)
![Page 3: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/3.jpg)
![Page 4: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/4.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 5: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/5.jpg)
Frames + threads Variables Watches ?
Test
Results?
Console Display ?
Code
![Page 6: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/6.jpg)
Frames + threads Test
Results?Variables + watchesConsole
Code
![Page 7: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/7.jpg)
1. Should you always launch in debug mode?
![Page 8: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/8.jpg)
IMHO: Always Launch in
Debug Mode!
• Ability to halt and troubleshoot
• Threads
• Hot code replacement
• Consider launching externally
![Page 9: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/9.jpg)
Excecution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 10: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/10.jpg)
2. Evaluating Code
![Page 11: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/11.jpg)
Step Out- Code Evaluation
• Both in Java editor and free form
• Nothing is private
• Watches
• In breakpoints
• Nested evaluations / breaks
• Scrapbook
![Page 12: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/12.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 13: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/13.jpg)
3. Controlling your steps
and Breaks
![Page 14: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/14.jpg)
Step OUt- Controlling your
steps and breaks
• Step filters
• Frame filters
• Smart stepping
• Lambda stepping and breakpoints
• Exception breakpoints
– Break after
![Page 15: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/15.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 16: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/16.jpg)
4. Manipulating Code
Flow
![Page 17: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/17.jpg)
Step Out- Manipulating Flow
• Drop to frame
• Modify values – nothing is really final
• Force return
![Page 18: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/18.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 19: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/19.jpg)
5. Tracking Classes
![Page 20: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/20.jpg)
Step Out - Tracking Classes
• Class load breakpoints
• Static initializers
• All instances and count
![Page 21: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/21.jpg)
6. Tracking Objects
![Page 22: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/22.jpg)
SteP Out- Track Objects
• Instance initializers + default constructor
• Unique Id + Labelling objects
• Watch points + instance filter
• Tracking references
![Page 23: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/23.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing the debugger
• Debugging concurrent code
![Page 24: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/24.jpg)
7. Customizing the
DEbugger
![Page 25: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/25.jpg)
Quick Recap - Customizing
the debugger
• Detail Formatters / Data Type Renderers
• Logical Structures
![Page 26: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/26.jpg)
Execution Order
• Code evaluation
• Controlling your steps and breaks
• Manipulating code flow
• Tracking classes and objects
• Customizing renderers
• Debugging concurrent code
![Page 27: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/27.jpg)
8. Dealing With
Concurrency
![Page 28: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/28.jpg)
Step Out- concurrency
• Instance and thread filters on breakpoints
• Step resume
• Analyzing deadlocks
![Page 29: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/29.jpg)
References
![Page 30: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/30.jpg)
10. REferences
• IDE documentation
• Debugging in IDEA 2016.1
https://www.youtube.com/watch?v=VdBsUv4lnm4
• jDays 2016: ”JVM Debugging under the hood”:
https://www.youtube.com/watch?v=lNR4bEzYaH4
• The mysterious life of developers:
https://www.youtube.com/watch?v=Ey3Ix7QuKPs
![Page 31: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/31.jpg)
Final
Questio
ns
?
![Page 32: Java Debugging Tips @oredev](https://reader034.vdocuments.net/reader034/viewer/2022051521/5a6ed2a67f8b9a7a488b5045/html5/thumbnails/32.jpg)
Thank you for
your time!
APPLAUS?