Debugger Frontent for the SharpDevelop...

12
Martin Koníček

Transcript of Debugger Frontent for the SharpDevelop...

Page 1: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Martin Koníček

Page 2: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Current state of debugging Breakpoints, watches, etc.

Basically the same in any current IDE

Page 3: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

What about data structures?

Page 4: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

What about data structures? Debugger does not provide a useful view of reality

Page 5: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Solution Object graph visualizer

Page 6: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Debugging collections Very common case – collections of objects

Page 7: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Debugging collections Users have to expand each item to see anything

Page 8: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Solution Collection visualizer

Page 9: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Problems faced Determining how the graph looks in memory

The graph lives in a separate process, GC moves objects while the debugger is trying to analyze the graph

Dynamic layout and animation of the graph

Small graph changes -> small layout changes

Calculating “natural” edge routes

Page 10: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Problems faced Achieving reasonable performance

Interprocess communication very expensive

Need to handle large collections

Solution: everything is as lazy as possible. What is not on the screen is not being calculated.

Page 11: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Results Already integrated in the standard release of

SharpDevelop

Received positive feedback

will evangelize the features to collect more feedback

Extensibility

users can plug in new visualizers

Page 12: Debugger Frontent for the SharpDevelop IDEartax.karlin.mff.cuni.cz/~konim5am/thesis/DebuggerVisualizers.pdf · Problems faced Determining how the graph looks in memory The graph lives

Questions?