'''Debugging''' is the of process diagnosing and correcting unexpected behaviour of programs. ** See Also ** [Category Debugging]: [IDE]: many of which provide debugging functionality along with other features [Profiling Tcl]: [Static syntax analysis]: ** Concepts ** [call graph]: ** Tools for Dynamic Analysis ** [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 [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. [TclPro]: a popular open-source debugger originally sold by [Scriptics] [Tuba]: providing source code viewing as you step thru the code, breakpoints on specific lines and procs, and ability to set watchpoints on variables [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. ** Publications ** [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)]: [List the call stack]: [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 [traceproc helper]: specify a list of commands to monitor, and see the actual arguments passed to the commands when they are run, as well as the result. [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