Slicer / ITK / VTK Development Tools

14
NA-MIC National Alliance for Medical Image Computing http://na-mic.org Slicer / ITK / VTK Development Tools Steve Pieper, PhD

description

Slicer / ITK / VTK Development Tools. Steve Pieper, PhD. Overall Goals. Understanding the Big Picture: Code browsing with ctags Source Navigator Debugging: tkcon Using the native debuggers itkFilterWatcher. Ctags. Exuberant CTAGS Ctags.sf.net - PowerPoint PPT Presentation

Transcript of Slicer / ITK / VTK Development Tools

Page 1: Slicer / ITK / VTK Development Tools

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[email protected]

[email protected]