For [netbeanstcl%|%Tcl Plugin for Netbeans] '''1.0''' - [GSoC 2011 Executed Projects].
----
**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'') [http://wiki.tcl.tk/28657#pagetocab4f3e78%|%debugger control button] to make a
connection. debugServer.tcl will put appropriate information. Execution stops at the very first step of script. Now use [http://wiki.tcl.tk/28657#pagetocab4f3e78%|%debugger interface] to control debug process. Output window with debugServer.tcl displays stderr as debugger messages and all messages have ">>>" at the beginning of line. [Stdin] for script that's currently debugged is connected to ''Output - debugServer.tcl'', so if some [gets] [stdin] appears please write input inside '''Output - debugServer.tcl''' window.<
>
<
>
%|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 set 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]|
<>GSoC|GSoC 2011 Executed Projects|netbeanstcl