NA-MIC National Alliance for Medical Image Computing Slicer / ITK / VTK Development Tools Steve Pieper, PhD
National Alliance for Medical Image Computing 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 Ctags Exuberant CTAGS –Ctags.sf.net Provides detailed tag files for emacs and vi Run in top level directory with –ctags –r.
National Alliance for Medical Image Computing Source Navigator –Linux source code to compile –Windows binaries
National Alliance for Medical Image Computing 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 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 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 gdb Debugging Start slicer Use ps to find process id of ‘parent’ vtk thread Use gdb command ‘attach ’
National Alliance for Medical Image Computing 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 Interactive VTK Commands ListMethods –Tells all instances currently known to the interpreter Print –Calls the PrintSelf method ListMethods –Tell what methods are available in the interpreter
National Alliance for Medical Image Computing 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 Most useful debugging tool Print statements in the code! –Just remember to remove them when you are done debugging… –Be sure to flush them –Or, use the –verbose option in slicer to control debugging flags