Slide 1

Slide 1 text

Smarter debugging in the IDE EclipseCon Europe 2018

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 23.10.2018 EclipseCon Europe / Debugging (@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 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 4

Slide 4 text

History 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 5

Slide 5 text

23.10.2018 EclipseCon Europe / Debugging (@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 Grace Hopper, 1947

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. 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 7

Slide 7 text

Demo 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 8

Slide 8 text

Steps • Reproduce Problem • Reduce Problem Size • Debug • Unit Test to prevent reappearance 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 9

Slide 9 text

Techniques • Interactive debugging • Print debugging (or tracing) • Remote debugging • Post-mortem debugging • using dumps etc. 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 10

Slide 10 text

Preventing Bugs • Code Reviews • Static Analysis • Flow analysis 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 11

Slide 11 text

Breakpoint Targets • Field (access/modification) • Class • Constructor • Method (enter/exit) • Line • Exceptions (caught/uncaught) • On libraries without source, use the outline view context menu to set breakpoints 23.10.2018 EclipseCon Europe / Debugging (@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 23.10.2018 EclipseCon Europe / Debugging (@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 23.10.2018 EclipseCon Europe / Debugging (@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 • Show method return value • Step into selection of a chained call • Copy command line details from launch 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 15

Slide 15 text

Debug View Options • Show Monitors • Show Threads/Thread Groups • Detail formatter • Show references • Show Instance ID • Show Actual/Declared Type 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 16

Slide 16 text

Step filters 23.10.2018 EclipseCon Europe / Debugging (@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

Links 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 18

Slide 18 text

Resources • https://github.com/angelozerr/jdt-codemining • Eclipse Tips & Tricks Debugging • A Practical Guide to Java Remote Debugging • Java Remote Debugging in the Real World • jdb - The Java Debugger • Writing your own debugger • Java™ Debug Interface 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 19

Slide 19 text

Tutorials • 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/ • https://dzone.com/articles/how-to-patch-your-ide-to-fix-an-urgent- bug 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Q & A Slides: https://speakerdeck.com/rgra/smarter-debugging-in-the-ide Code: https://github.com/rgra/io.github.rgra.debug Twitter: @rgransberger Feedback Welcome! 23.10.2018 EclipseCon Europe / Debugging (@rgransberger)