** Description ** Debugging is the process of moving from the identification of some departure from the expected or hoped for behavior towards, hopefully, the identification of the cause, or at least, a change in the process so that behavior is more acceptable. Many of the [IDE]s available provide debugging functionality along with other features. ** Tools ** [a basic debugger]: [a debugger with syntax highlighting using ctext]: [A minimal debugger]: [atkdebugger]: A patch for Tcl 8.5 is available at the website [d: A handy little debugging proc]: by [Ed Suominen], for development of PRIVARIA [http://www.privaria.org/], an end-user TCL app with a lot going on inside. [a minimal debugger]: implements breakpoints, allowing to run any Tcl command, including inspecting and setting the local variables... [Errx]: a mixed debug-message / stack backtrace introspection "puts" [gdb]: [Guarded proc]: [RS]: monitors or prevents redefining an existing proc [Nagelfar]: reads one or more Tcl scripts and checks them for correctness, conflicts and even a little style. [Tkinspect]: a stand alone application that queries a running Tk application and then displays its state. This allows you to display current variable values and modify procs or variables. A [Tix]-enabled version of it is in [TixInspect]. The [Tcl Dev Kit] provides an enhanced version of TkInspect since release 2.5. [TkCon]: [http://www.purl.org/net/hobbs/tcl/script/tkcon/]: by [JH%|%Jeff Hobbs%|%]. A great way to interact with a running Tcl/Tk application. It can be attached to any Tcl/Tk interpreter or namespace and allows any modification. This application comes bundled with [ActiveTcl] and therefore also with [Tcl Dev Kit]. Sports facilities such as [http://tkcon.sourceforge.net/docs/idebug.html%|%idedebug%|%] and [http://tkcon.sourceforge.net/docs/observe.html%|%observe%|%], which provide sophisticated breakpoint and tracing facilities, and '''hot errors''', which displays the source of the proc in dig-down style [INSPECT app]: [valgrind]: [Electric Fence]: [PED]: [RamDebugger]: [Yet another Tcl debugger]: [Tagma Debugger]: A rewrite of Yet another Tcl debugger. [ftp://ftp.procplace.com/pub/tcl/sorted/packages-7.6/devel/%|%TDebug%|%]: a Tk based debugger that is sourced into your script. Works conceptually like the emacs-lisp debugger. An updated version of it is in [TixDebug]. The 'tracecommand' extension: based on a patch [ftp://ftp.ucsd.edu/pub/alpha/tcl/extensions/trace.c] [[does [Vince Darley] have a more recent version of this?]] to the Tcl core, is available from the scriptics bug database [[we need a URL here]]. It can be used to dump before/after command+argument+result evaluations both globally or only inside a given command or procedure. It is similar to the 'trace dump' facility available in the Tcl-scripted MacOS editor 'Alpha'. [http://www.fridu.com/Html/jTcl.html%|%jTcl%|%]: a Java-like object interface which provides debugging facilities. [escargo] 2004-02-04: dead link. ** Articles ** [http://computerworld.com/newsletter/0%2C4902%2C77375%2C0.html?nlid=APP%|%A Debugging Primer%|%]: an excerpt [Debugging: The 9 Indispensable Rules For Finding Even the Most Elusive Software and Hardware Problems, David J. Agans] [How to be a Programmer: A Short, Comprehensive, and Personal Summary, Robert L. Read, 2002]: [PYK] 2012-12: a quick glance-through indicates that this is worth the read. Others have received it positively as well. ** See Also ** [C compiled image processing on an interactive Bwise canvas]: [Commonly encountered problems in Tcl]: [Debugging Aid For Production Code]: [Debugging Expect programs]: [debug with trace]: [Dynamic Debugger]: a strange breed. For whatever reason, many programmers are either unfamilar or dissatisfied with most of the products in this category. Debugging via introspection]: [Effective ways to request help with Tcl-related problems]: [Favorite debugging techniques applicable to Tcl]: [Help! My Tcl application just crashed!]: [How to debug memory faults in Tcl and extensions]: [Leak Hunt (C level)]: [Memory introspection]: important when trying to find bugs going into the C-level, especially hard to pin-down memory trouble [regular expression debugging tips]: [Static syntax analysis]: Static code checkers are tools which read your Tcl code and attempt to identify either real, or potential, problems. This is similar to the Unix ''lint'' command. [Steppin' out]: uses Tcl's own command tracing [traceback]: [what debugging tools are available to a Tcl programmer]: [Whole-Script Tracing]: ** Components with Debugging Features ** [Tcl%|%Tcl itself]: provides enhanced command tracing since release 8.4 (See [TIP] #62). Example of usage is at [Steppin' out]. [BLT]: comes with several useful debugging commands. [TclX]: comes with commands for profiling and debugging facilities, for example [cmdtrace]. [http://www.csua.berkeley.edu/%7Esls/woa/distrib/%|%SNTL%|%]: includes a debugging message system. [Source Navigator]: an IDE with code comprehension features. It is written in Tcl/Tk/itcl, but allows you to understand code written in a wide variety of languages. ** Projects ** [GSoC Idea: Debugging tools for NRE]: <> Application | Debugging | Dev. Tools