java debugging tips @oredev

32
Martin Skarsaune Senior Developer and Co-Owner @MSkarsaune Debugging Tips

Upload: martin-skarsaune

Post on 29-Jan-2018

111 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Java Debugging Tips @oredev

Martin Skarsaune

Senior Developer and Co-Owner@MSkarsaune

Java

Debugging

Tips

高馬丁

Page 2: Java Debugging Tips @oredev
Page 3: Java Debugging Tips @oredev
Page 4: Java Debugging Tips @oredev

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

Frames + threads Variables Watches ?

Test

Results?

Console Display ?

Code

Page 6: Java Debugging Tips @oredev

Frames + threads Test

Results?Variables + watchesConsole

Code

Page 7: Java Debugging Tips @oredev

1. Should you always launch in debug mode?

Page 8: Java Debugging Tips @oredev

IMHO: Always Launch in

Debug Mode!

• Ability to halt and troubleshoot

• Threads

• Hot code replacement

• Consider launching externally

Page 9: Java Debugging Tips @oredev

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

2. Evaluating Code

Page 11: Java Debugging Tips @oredev

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

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

3. Controlling your steps

and Breaks

Page 14: Java Debugging Tips @oredev

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

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

4. Manipulating Code

Flow

Page 17: Java Debugging Tips @oredev

Step Out- Manipulating Flow

• Drop to frame

• Modify values – nothing is really final

• Force return

Page 18: Java Debugging Tips @oredev

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

5. Tracking Classes

Page 20: Java Debugging Tips @oredev

Step Out - Tracking Classes

• Class load breakpoints

• Static initializers

• All instances and count

Page 21: Java Debugging Tips @oredev

6. Tracking Objects

Page 22: Java Debugging Tips @oredev

SteP Out- Track Objects

• Instance initializers + default constructor

• Unique Id + Labelling objects

• Watch points + instance filter

• Tracking references

Page 23: Java Debugging Tips @oredev

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

7. Customizing the

DEbugger

Page 25: Java Debugging Tips @oredev

Quick Recap - Customizing

the debugger

• Detail Formatters / Data Type Renderers

• Logical Structures

Page 26: Java Debugging Tips @oredev

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

8. Dealing With

Concurrency

Page 28: Java Debugging Tips @oredev

Step Out- concurrency

• Instance and thread filters on breakpoints

• Step resume

• Analyzing deadlocks

Page 29: Java Debugging Tips @oredev

References

Page 30: Java Debugging Tips @oredev

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

Final

Questio

ns

?

Page 32: Java Debugging Tips @oredev

Thank you for

your time!

APPLAUS?