Slicer / ITK / VTK Development Tools
-
Upload
william-dale -
Category
Documents
-
view
50 -
download
0
description
Transcript of Slicer / ITK / VTK Development Tools
![Page 1: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/1.jpg)
NA-MICNational Alliance for Medical Image Computing http://na-mic.org
Slicer / ITK / VTK Development Tools
Steve Pieper, PhD
![Page 2: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/2.jpg)
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
![Page 3: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/3.jpg)
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 .
![Page 4: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/4.jpg)
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
![Page 5: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/5.jpg)
National Alliance for Medical Image Computing http://na-mic.org
Source Navigator
• http://sourcenav.sourceforge.net/– Linux source code to compile– Windows binaries
![Page 6: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/6.jpg)
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
![Page 7: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/7.jpg)
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
![Page 8: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/8.jpg)
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
![Page 9: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/9.jpg)
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
![Page 10: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/10.jpg)
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
![Page 11: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/11.jpg)
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
![Page 12: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/12.jpg)
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
![Page 13: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/13.jpg)
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
![Page 14: Slicer / ITK / VTK Development Tools](https://reader036.fdocuments.us/reader036/viewer/2022082711/56813266550346895d990057/html5/thumbnails/14.jpg)
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