Version 16 of netbeanstcl debugger

Updated 2011-08-21 12:28:07 by dmp

For netbeanstcl 1.0. Google Summer of Code 2011.

Tcl Plugin for Netbeans - Debugger Overview

Debug Process

Debugger is separated into two parts: Java (implements Netbeans Debugger Core API and Debugger Core - UI) and Tcl part (debugServer.tcl). Java part communicates with debugServer.tcl using socket and simple "newline" based protocol. To handle script execution Tcl's trace and info are used.
To start debug process use Debug Project (Ctrl+F5) then following state will appear:

Netbeans window after Debug Project (Ctrl+F5):
http://wiki.tcl.tk/_repo/images/dmp/DebugBefore.png


Tclsh executes debugServer.tcl. It's waiting for connection from Netbeans Interface. Click any (except Stop) debugger control button to make a connection. debugServer.tcl will put appropriate information. Execution stops at the very first step of script. Now use debugger interface to control debug process.

After connection:
http://wiki.tcl.tk/_repo/images/dmp/DebugConnection.png


Debugger Control Buttons

http://wiki.tcl.tk/_repo/images/dmp/DebugControls.png
From the left side:

  • Finish Debugger Session: To quit debug mode. Terminates script execution.
  • Pause: Unused.
  • Continue: Run script until it reaches breakpoint.
  • Step Over: Single step, stepping over instruction if available.
  • Step Into: Single step, stepping into instruction if available.
  • Run To Cursor: Run script until it reaches cursor position or next breakpoint. Simply adds a temporary breakpoint (unvisible for user interface, but works the same as visible one) in line where cursor is present.

Debugger Views

Breakpoints

Set breakpoint by click line number inside editor. To run properly breakpoint must be in the line with some code, because empty lines are ommited by trace steps. Using Breakpoints View you could Jump To place where selected breakpoint is located or Delete one.

Breakpoints View
http://wiki.tcl.tk/_repo/images/dmp/DebugBreakpointsView.png

Variables

Formatted content of [info locals%|%[info locals] and [info globals%|%[info globals]. Using the diamond with plus (on the left side of Variables View) - a Watch could be added. Other diamonds may be used to show watches inside Variables View or Evaluation Result (Evaluation is unused).

Variables View
http://wiki.tcl.tk/_repo/images/dmp/DebugVariablesView.png

Watches

Appears as a separate window when Show Watches Inside Variables View option (inside Variables View) is disabled. Watches just display value for given variable name when it's set. I found it useful when variable view contains a lot of variables or you want to watch element from array. You could type tcl_platform(osVersion) for example to see element of array in the watch.

Watches View
http://wiki.tcl.tk/_repo/images/dmp/DebugWatchesView.png

Call Stack

Displays elements (places in code) where script changes its [info level].

Call Stack View
http://wiki.tcl.tk/_repo/images/dmp/DebugCallStackView.png

Options

Ability to select verbose mode (for debugServer.tcl output) and set port number for communication between Netbeans Debugger API and debugServer.tcl.

Tcl Plugin Options
http://wiki.tcl.tk/_repo/images/dmp/DebugOptions.png