Power Debugging Notes

6 views
Skip to first unread message

Scott Hickey

unread,
Apr 18, 2012, 9:14:38 PM4/18/12
to Omaha-Java-Users-Group
What a fun metting! It great seeing so many people there and at the Old Chicago afterwards.

Below is a cut and paste of the notes had for my presentation. Please feel free to respond to the list or contact me directly if you have any questions,

Scott Hickey

Introduction

  • The challenge
    • long running processes
    • complex object graphs
    • need more output than is easily readable in the debugger
    • need more power than the expressions window
    • need more power than the custom formatter
    • need to do exploratory coding with objects they way we’d use SQL on database

The Tools

  • Groovy Console
    • interactively execute groovy code
    • code completion
    • color-syntax highlighting
    • create complex objects in Java, inject those objects into the Groovy Console context, and launch the Groovy Console
    • embed the Groovy Console into a web application and launch a web console
    • objects stay in the context, but objects created in the console don’t
    • use inspect last to view last result
  • Clojure REPL
    • run from inside of Eclipse or Emacs
    • Eclipse CounterClockwise plugin is getting better every month
    • “Load File in REPL” - everything created is live
    • easily run and save code a command at a time
    • easily create and reference results of commands


Strategies for Development and Production Support

  • Use snapshots of source data(base)
    • xml or Java serialized files
    • use a test harness to launch your process
    • use a test harness to create your application context
    • make the result available to the console or repl
    • interactively use the application components to further understand how your app is behaving
  • Use snapshots for interesting objects
    • use AOP to serialize results a specific points in the process
      • could be triggered automatically with exception handling advice
      • trigger it on/off with logging setting
    • use a test harness to run and write the result objects to disk
    • write a Groovy or Clojure script to deserialize and pull the objects into the GroovyConsole context or the Clojure REPL
  • Embed in TestHarness
    • build out a custom GUI specific for your application
    • build a library of useful methods for running processes or displaying/inspecting complex objects
  • Embed in an Admin Console on a Running Application
    • very useful interacting with system components
Reply all
Reply to author
Forward
0 new messages