External tools can be invoked from within the Debugger using the Shell command. Menus and buttons can be configured to invoke arbitrary external commands and dynamically construct command-line arguments to those commands. The main facility for constructing command-line arguments is the %EVAL escape sequence.
For example, here is a set of configuration directives appropriate for invoking SNiFF+ from within the Debugger. The variable _SELECTION is a Debugger special variable, corresponding to the current selection in the Debugger source pane.
shellconfirm: Off
usealternateeditor: On
usextermforalternateeditor: Off
editor: sniffedit
editorLaunch: %FILE0
debugbutton: Class i=letter_c h="SNiFF browse class" c="shell sniffaccess
browse_class \\*/ %EVAL{_SELECTION}"
debugbutton: Hierarchy i=dsndnt h="SNiFF hierarchy" c="shell sniffaccess
hierarchy \\*/ %EVAL{_SELECTION}"
debugbutton: Symbol i=search h="SNiFF find symbol" c="shell sniffaccess
find_symbol \\*/ %EVAL{_SELECTION}"
debugbutton: Retriever i=letter_r h="SNiFF retriever " c="shell sniffaccess
retrieve \\*/ %EVAL{_SELECTION}"
menu: Sniff {{Class shell sniffaccess browse_class \*/ %EVAL{_SELECTION}}
{Hierarchy shell sniffaccess hierarchy \*/ %EVAL{_SELECTION}} {Symbol shell
sniffaccess find_symbol \*/ %EVAL{_SELECTION}} {Retriever shell sniffaccess
retrieve \*/ %EVAL{_SELECTION}}}
menu: MultiMenuBar {{ &File ->FileMenu } { &Debug
->DebugMenu } { &View ->ViewMenu } { &Browse
->BrowseMenu } { T&arget ->Target } { &Tools
->ToolsMenu } { &SNiFF ->Sniff } { &Config
->ConfigMenu } { &Help ->HelpMenu } }