1 / 12

TotalView Multiprocess Debugger

Matt Wolfe LC Development Environment Group Lawrence Livermore National Laboratory. TotalView Multiprocess Debugger. Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551.

min
Download Presentation

TotalView Multiprocess Debugger

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Matt WolfeLC Development Environment GroupLawrence Livermore National Laboratory TotalView Multiprocess Debugger Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344 LLNL-PRES-426093

  2. TotalView Uses • Code correction • Code exploration and learning • Code statement runtime operation study • Memory utilization and debugging • Languages: C, C++, Fortran, UPC • Paradigms: serial, MPI, OpenMP, pthreads, CUDA (coming)

  3. TotalView Technologies' Tools • Workbench: tvworkbench • MemoryScape: memscape, memscript • TotalView: totalview, totalviewcli, tvscript, visualize • ReplayEngine: totalview -replay • Remote Display Client: remote_display_client.sh • contributed: colortv, mtv, mxterm, sxterm

  4. When To Use TotalView (TV) • Start code under TV • Attach to running code with TV • Post mortem core file inspection

  5. Preparing Code and Invoking TotalView • Compile: -g -O0 • IBM: -qsaveopt OpenMP: -qsmp=omp:noopt • totalview -args <code command line> • totalview • totalview code corefile

  6. TotalView Basic Tools • Visual and one-click access to greater detail • Breakpoints, Barrier points, TV intrinsics • Program control, Src/Asm single-stepping, restart, detach • Source, stack trace, stack frame (args, locals, registers) • View/change data, tooltips, Last Value, change highlighting • File/text/symbol search • Thread control, signal control

  7. TotalView Power Tools • Watchpoints, Conditional Breakpoints, Code Patching • Statistics, Filtering, Sorting, Visualization, Dump Format • Call Graph, Show Across, Custom Groups, Disassembler • Expression List, Evaluate, Type Transformation • Message Queue Display and Graph • Program Browser, Fortran Modules, Thread Objects • Memory Debugger, Replay Engine, Command Line Interface • tvscript

  8. Working at Scale • Reduce your process count if possible • Try STATGUI • Subset attach • Tools > Event Log • Work up to your target scale and be patient • Processes and Threads tabs • Sort by process state and collapse for counts • Filter out uninteresting libraries' symbols

  9. TVTech Resources • www.totalviewtech.com/support/videos.html • Help menu • F1 key • CLI help command • www.totalviewtech.com/support-other/release_notes.html • forum.totalviewtech.com (FAQs, Q&A wisdom) • Your local development tools support team, Tri-Labs issue tracker

  10. Afternoon Session • Hear use cases • How to see shared object dependencies: file, ldd, cat /proc/<PID>/maps • How to trace system calls: man strace (x86-64); man truss (rs6000) • How to drop a useful core file: limit coredumpsize unlimited, ulimit -c unlimited, ^\ • How to determine your TotalView version: -V • How to start with a clean slate: rm -f –r \ ~/.{memscape,preferences.tvd,totalview,tvworkbench} \ {~,.}/.tvdrc • How to get TV to display your source: $tree()

  11. Afternoon Session (Continued) • How to stop TV before the stack is unwound: ifort: for__issue_diagnostic • How to catch a Nan: CDWP(C, $double, 8 bytes): if ($is_nan($newval)) $stop • How to catch heap corruption • How to quickly return to a location of interest: $count • How to trace a variable (x86-64) printf("#"); fflush( (void *) 0); • How to display an array using an array of indices Ask Jeff <keasler@llnl.gov> about UPDD.

  12. Afternoon Session (Continued) • How to present memory leaks to a library provider • How to check instantaneous memory changes (x86-64) printf("\nTV node ID: %d, PID: %d\n",$nid,$pid); malloc_stats() • How to reconstruct an incomplete stack trace • How to find missing subroutine arguments and locals • Beginning to use the CLI: help • Discovering how to get TV to accept an expression

More Related