Slide 1

Slide 1 text

#Debugging @rgransberger Smarter debugging in the IDE Rabea Gransberger @rgransberger https://rgra.github.io

Slide 2

Slide 2 text

Rabea Gransberger • Computer Science Diploma 2008 • Java Developer, Project Lead at MEKOS, Germany • Java Champion • Organization Team JUG Bremen, JCrete, JAlba 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger) By Karte: NordNordWest, Lizenz: Creative Commons by-sa-3.0 de, CC BY-SA 3.0 de, https://commons.wikimedia.org/w/index.php?curid=35392837

Slide 3

Slide 3 text

Definition • Debugging is the process of finding and resolving defects or problems within a computer program that prevent correct operation of computer software or a system. • Debugging tactics can involve interactive debugging, control flow analysis, unit testing, integration testing, log file analysis, monitoring at the application or system level, memory dumps, and profiling. https://en.wikipedia.org/wiki/Debugging 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 4

Slide 4 text

History 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 5

Slide 5 text

11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger) https://upload.wikimedia.org/wikipedia/commons/8/8a/H96566k.jpg By Courtesy of the Naval Surface Warfare Center, Dahlgren, VA., 1988. [Public domain], via Wikimedia Commons

Slide 6

Slide 6 text

Thomas Edison, letter to an associate, Nov 1878: It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that "Bugs"—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. Edison to Puskas, 13 November 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., cited in Hughes, Thomas Parke (1989). American Genesis: A Century of Invention and Technological Enthusiasm, 1870- 1970. Penguin Books. p. 75. ISBN 978-0-14-009741-2. 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 7

Slide 7 text

Demo 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 8

Slide 8 text

Steps • Reproduce Problem • Reduce Problem Size • Debug • Unit Test to prevent reappearance 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 9

Slide 9 text

Techniques • Interactive debugging • Print debugging (or tracing) • Remote debugging • Post-mortem debugging • using dumps etc. 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 10

Slide 10 text

Preventing Bugs • Code Reviews • Static Analysis • Flow analysis 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 11

Slide 11 text

Breakpoint Targets • Field (access/modification) • Class • Constructor • Method • Line • Exceptions (caught/uncaught) • On libraries without source, use the outline view context menu to set breakpoints 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 12

Slide 12 text

Breakpoint Types/Properties • Enable/Disable • Conditional breakpoint • Filter • Tracing/Logging • Auto Disable • Hit/Pass Count • Trigger points/disable until • Suspend when value changes • Suspend VM/Thread • Create own Expressions 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 13

Slide 13 text

Debug Controls • Pause/Continue • Stop in main • Step into • Step over • Step return • Run to Line • Drop to Frame 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 14

Slide 14 text

IDE Debug Extras • Change value • Hover to show value • Inspect • Display in Debug Shell • Show variable values when debugging 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 15

Slide 15 text

Debug View Options • Show Monitors • Show Threads/Thread Groups • Own formatter • Show references • Show Instance ID • Show Actual/Declared Type 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 16

Slide 16 text

Step filters 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger) • Filter simple getters • Filter simple setters • Filter constructors • Filter static initializers • Filter synthetic methods • Filter ClassLoader • Filter certain packages

Slide 17

Slide 17 text

Stream Tracing 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 18

Slide 18 text

Links 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 19

Slide 19 text

IDE Tutorials • IntelliJ Java Debugging Deep Dive • Eclipse Tips & Tricks Debugging 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 20

Slide 20 text

Eclipse Code Mining • https://github.com/angelozerr/jdt-codemining 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 21

Slide 21 text

Remote Debugging • A Practical Guide to Java Remote Debugging • Java Remote Debugging in the Real World 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 22

Slide 22 text

Console • jdb - The Java Debugger 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 23

Slide 23 text

API • Writing your own debugger • Java™ Debug Interface 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 24

Slide 24 text

Tools • https://dzone.com/articles/the-state-of-debugging-in-java • https://www.infoq.com/articles/Advanced-Java-Debugging- Techniques • https://blog.takipi.com/java-debugger-the-definitive-list-of-tools/ • https://www.hascode.com/2018/04/analyzing-java-problems-tools- snippets-and-workflows/ 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 25

Slide 25 text

The best debugger ever made is a good night's sleep. @SashaLaundy 19:19 - 1. Dec. 2017 https://twitter.com/sashalaundy/status/936661004137635840 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)

Slide 26

Slide 26 text

Q & A Slides: https://speakerdeck.com/rgra/smarter-debugging-in-the-ide Code: https://github.com/rgra/io.github.rgra.debug Twitter: @rgransberger (DMs open) Feedback Welcome! 11.05.2018 DevoxxUK / Debugging (Rabea Gransberger @rgransberger)