Slicer / ITK / VTK Development Tools
-
Upload
william-dale -
Category
Documents
-
view
50 -
download
0
description
Transcript of Slicer / ITK / VTK Development Tools
NA-MICNational Alliance for Medical Image Computing http://na-mic.org
Slicer / ITK / VTK Development Tools
Steve Pieper, PhD
National Alliance for Medical Image Computing http://na-mic.org
Overall Goals
• Understanding the Big Picture:– Code browsing with ctags– Source Navigator
• Debugging:– tkcon– Using the native debuggers– itkFilterWatcher
National Alliance for Medical Image Computing http://na-mic.org
Ctags
• Exuberant CTAGS– Ctags.sf.net– This version comes with cygwin and
most linux distributions
• Provides detailed tag files for emacs and vi
• Run in top level directory with– ctags –R .
National Alliance for Medical Image Computing http://na-mic.org
Using the tags file from vim
• Put cursor on identifier of interest• Type Control-] to jump to the tag
– If there is more than one tag for this identifier, type :tselect and select desired tag from list
• Type Control-t to jump back to original spot
• You can nest tags on a stack to trace through a control flow
National Alliance for Medical Image Computing http://na-mic.org
Source Navigator
• http://sourcenav.sourceforge.net/– Linux source code to compile– Windows binaries
National Alliance for Medical Image Computing http://na-mic.org
Source Navigator
• Multi-directory class browser (see whole project)
• Hierarchy Display
• View all code– Jump to definitions and declarations– See comments and code
• Grep UI
National Alliance for Medical Image Computing http://na-mic.org
Native Tools
• CMake creates makefiles and .SLN files that can be used outside of CMake for debugging– Resolve linker or option issues
• Can attach to running process with gdb or visual studio– Debug the C++ code
National Alliance for Medical Image Computing http://na-mic.org
Visual Studio Slicer Debugging
• Start Slicer
• Tools->Debug Processes– Attach to wish84.exe, Slicer 2.4– Run program until it crashes– Browse to Source directory and set
breakpoints
National Alliance for Medical Image Computing http://na-mic.org
gdb Debugging
• Start slicer (built in debug mode)• Use ps to find process id of ‘parent’ vtk
thread• Use gdb command ‘attach <pid>’• For debugging startup:
– slicer2-linux-x86 Base/tcl/tkcon.tcl– Attach gdb– In tkcon:
• source Base/tcl/Go.tcl
National Alliance for Medical Image Computing http://na-mic.org
Tkcon
• Very smart console written in Tk– Identifier completion
• Files• Variables• Class instances• UI Windows
– Command line editing like readline
• Create VTK class instances and experiment
• Write and test tcl code interactively
National Alliance for Medical Image Computing http://na-mic.org
Interactive VTK Commands
• <instance> ListMethods– Tells all instances currently known to
the interpreter
• <instance> Print– Calls the PrintSelf method
• <instance> ListMethods– Tell what methods are available in the
interpreter
National Alliance for Medical Image Computing http://na-mic.org
itk::FilterWatcher
• Uses itk Observer mechanism to register callbacks for common events– StartEvent– ProgressEvent– EndEvent
• Prints total running time
National Alliance for Medical Image Computing http://na-mic.org
World’s oldest debugging tool
• Print statements in the code!– Just remember to disable them when you are done
debugging…• In C++
– vtkDebugMacro(“”);– Call GlobalWarningDisplayOn method for any instance
of a vtkObject subclass• In Tcl
if {$Module(verbose) == 1} { puts "INIT: ${m}Init"}
Use the –-verbose option in slicer to set the Module(verbose) flag
National Alliance for Medical Image Computing http://na-mic.org
Resources
• www.slicer.org
• www.na-mic.org/Wiki
• www.na-mic.org/Bug
• www.na-mic.org/Testing