Thursday, March 29, 2012

Debugging in 2012

This presentation was about Chronos, a proprietary Java debugger.  There is a free trial on their website.

While programs have advanced, debuggers haven't changed very much in the last 10-20 years.  Current debuggers:
  • Assume flow is sequential
  • Have a focus on single threads
  • Designed for short running programs
  • Not ideal for modern, multi-threaded, long running, or cloud applications
Logging is a broken technique for debugging:
  • Tries to predict where the bug is in advance, and the prediction is usually wrong
  • Messes up code
The future of debuggers? Chronon:
  • Records entire execution of program for playback
  • Recording is system, hardware, and platform independent
    • Can record on 64-bit machine and replay on 32-bit or vice versa
    • Can record on 12 core processor then replay on 2 cores
  • Recordings can be shared
    • Tester can record their session and result can be debugged by a developer
  • How does it perform?
    • Latest version, 3, is very optimised
    • Intended for production environment
    • Select what libraries need to be recorded; don't need to record Java API calls and state
  • What can you do?
    • Step forward and backwards in code
    • See full state of the application at a given time
    • Execution path of current method is highlighted, so you don't need to step through it to see what was called
    • Bookmarks for jumping to parts of a recording
    • Post-execution logging
      • Go to line in run log and add logging statement separately from code
      • Log messages can include state
  • Timeline view
    • See history of changes to a variable and method calls
    • Filter based on values or line numbers
    • Replay and see the logs
    • Keeps log messages out of the code
  • Exception log view
    • Jump to where exception was thrown, and debug from there
  • Limitations:
    • External environment isn't available, so you can't make changes and see the results
    • Need to ensure that code in workspace is the same as the recording being replayed
If you've ever had a bug that a tester found and you can't reproduce, Chronon might be the answer.  I've come across a few bugs like this, and I have one in particular which I might try to apply Chronos to.  I'm not sure what the licensing model is, but I think that the debugger itself might be free.

No comments:

Post a Comment