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
- Tries to predict where the bug is in advance, and the prediction is usually wrong
- Messes up code
- 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