TotalView Reference Guide : Part I: CLI Commands : Batch Debugging Using tvscript : tvscript Command Syntax
tvscript Command Syntax
The syntax for the tvscript command is:
tvscript [ options ] [ filename ] [ -a program_args ]
options
TotalView and tvscript command-line options. You can use any options described in Chapter 7, “TotalView Command Syntax,” . tvscript command-line options are described in the next section.
filename
The program being debugged.
-a program_args
Program arguments.
The command-line options most often used with tvscript are:
*-mpi (The MPI environments supported are those listed in the Parallel tab of the File > New Program dialog box.)
*-starter_args
*-nodes
*-np or -procs or -tasks
For more information on these command-line options, see Chapter 7, “TotalView Command Syntax,” .
The syntax for using tvscript with an MPI on Blue Gene/L and Blue Gene/P systems is:
tvscript [ options ] -mpi BlueGene - np number-of-instances -starter_args
          "filename [ mpi-arguments] [-args program_args]" mpirun
-np number-of-instances
The number of processes or tasks that the starter program will create.
-starter_args
Required, with the arguments following enclosed in quotes; the application executable (filename) to be debugged must be the first argument.
-mpi-arguments
The command arguments for mpirun, such as "-cwd",
"
-mode", and "-partition".
-args
Command argument for mpirun that passes to the launched application on the compute node.
mpirun
Required; the executable at the end of the command line.
tvscript Options
-create_actionpoint "source_location_expr [ =>action1 [, action2] ... ]"
Creates an action point at a source location using an expression. (See Action Point API” for writing expressions.) When the action point is hit, tvscript can trigger one or more actions. Add one -create_watchpoint command-line option for each action point.
See -event_action for information about actions.
-event_action "event_action_list"
Performs an action when an event occurs. Events represent an unanticipated condition, such as free_not_allocated in the Memory Debugger. You can use more than one -event_action command-line option when invoking tvscript.
Here is how you enter an event_action_list :
event1=action1,event2=action2
or
event1=>action1,action2,action3
Supported tvscript Events:
Event Type
Event
Definition
General event
any_event
A generated event occurred.
Memory debugging event
addr_not_at_start
Program attempted to free a block using an incorrect address.
alloc_not_in_heap
The memory allocator returned a block not in the heap; the heap may be corrupt.
 
alloc_null
An allocation either failed or returned NULL; this usually means that the system is out of memory.
 
alloc_returned_bad_­alignment
The memory allocator returned a misaligned block; the heap may be corrupt.
 
any_memory_event
A memory event occurred.
 
bad_alignment_argument
Program supplied an invalid alignment argument to the heap manager.
 
double_alloc
The memory allocator returned a block currently being used; the heap may be corrupt.
 
double_dealloc
Program attempted to free an already freed block.
 
free_not_allocated
Program attempted to free an address that is not in the heap.
 
guard_corruption
 
hoard_low_memory_­-threshold
Program overwrote the guard areas around a block.
Hoard low memory threshold crossed.
 
realloc_not_allocated
 
rz_overrun
 
rz_underrun
 
rz_use_after_free
 
 
rz_use_after_free_overrun
 
rz_use_after_free_under-run
Program attempted to reallocate an address that is not in the heap.
Program attempted to access memory beyond the end of an allocated block.
Program attempted to access memory before the start of an allocated block.
Program attempted to access a block of memory after it has been deallocated.
Program attempted to access memory beyond the end of a deallocated block.
Program attempted to access memory before the start of a deallocated block.
 
termination_notification
The target is terminating.
Source code debugging event
actionpoint
A thread hit an action point.
error
An error occurred.
For each occurring event, define the action to perform:
Action Type
Action
Definition
Memory debugging actions
check_guard_blocks
Checks all guard blocks and write violations into the log file.
list_allocations
Writes a list of all memory allocations into the log file.
list_leaks
Writes a list of all memory leaks into the log file.
save_html_heap_status_­source_view
Generates and saves an HTML version of the Heap Status Source View Report.
save_memory_­debugging_file
Generates and saves a memory debugging file.
save_text_heap_status_­source_view
Generates and saves a text version of the Heap Status Source View Report.
Source code debugging actions
display_backtrace
[
-level level-num ]
[
num_levels ]
[
options ]
Writes the current stack backtrace into the log file.
-level level-num sets the level at which information starts being logged.
num_levels restricts output to this number of levels in the call stack.
If you do not set a level, tvscript displays all levels in the call stack.
options is one or more of the following:
-[no]show_arguments
-[no]show_fp
-[no]show_fp_registers
-[no]show_image
-[no]show_locals
-[no]show_pc
-[no]show_registers
 
print [ -slice {slice_exp}]
{variable | exp}
Writes the value of a variable or an expression into the log file. If the variable is an array, the -slice option limits the amount of data defined by slice_exp. A slice expression is a way to define the slice, such as var[100:130] in C and C++. (This displays all values from var[100] to var[130].) To display every fourth value, add an additional argument; for example, var[100:130:4]. For additional information, see Chapter 14 Examining Arrays” in the TotalView User Guide.
-display_specifiers "display_specifiers_list"
By default, tvscript writes all of the information in the following table to the log file. You can exclude information by using one of the following specifiers:
Type of Specifier
Specifier
Display ...
General display specifiers
noshow_fp
Does not show the frame pointer (FP)
noshow_image
Does not show the process/library in backtrace
noshow_pc
Does not show the program counter (PC)
noshow_pid
Does not show the system process ID with process information
noshow_rank
Does not show the rank of a process, which is shown only for a parallel process
noshow_tid
Does not show the thread ID with process information
Memory debugging display specifiers
noshow_allocator
 
noshow_backtrace
Does not show the allocator for the address space
Does not show the backtraces for memory blocks
noshow_backtrace_id
Does not show the backtrace ID for memory blocks
noshow_block_address
Does not show the memory block start and end addresses
noshow_flags
Does not show the memory block flags
noshow_guard_id
Does not show the guard ID for memory blocks
noshow_guard_settings
Does not show the guard settings for memory blocks
noshow_leak_stats
Does not show the leaked memory block statistics
noshow_owner
Does not show the owner of the allocation
noshow_red_zones_set-tings
Does not show the Red Zone entries for allocations (and deallocations) for the address space
-memory_debugging
Enables memory debugging and memory event notification. This option is required with any option that begins with -mem. These options are TotalView command line options, as they can be invoked directly by TotalView.
-mem_detect_leaks
Performs leak detection before generating memory information.
-mem_detect_use_after_free
Tests for use after memory is freed.
-mem_guard_blocks
Adds guard blocks to an allocated memory block.
-mem_hoard_freed_memory
Holds onto freed memory rather than returning it to the heap.
-mem_hoard_low_memory_threshold nnnn
Sets the low memory threshold amount. When memory falls below this amount, an event is fired.
-mem_paint_all
Paints memory blocks with a bit pattern when a memory is allocated or deallocated.
-mem_paint_on_alloc
Paints memory blocks with a bit pattern when a memory block is allocated.
-mem_paint_on_dealloc
Paints memory blocks with a bit pattern when a memory block is deallocated.
-mem_red_zones_overruns
Turns on testing for Red Zone overruns.
-mem_red_zones_size_ranges min:max,min:max,...
Defines the memory allocations ranges for which Red Zones are in effect. Ranges can be specified as follows:
x:y allocations from x to y
:y allocations from 1 to y
x: allocations of x and higher
x allocation of x
-mem_red_zones_underruns
Turns on testing for Red Zone underruns.
-maxruntime "hh:mm:ss"
Specifies how long the script can run.
-script_file script_file
Names a file containing tvscript API calls and Tcl callback procedures that you create.
-script_log_filename logFilename
Overrides the name of the TVScript log file.
WARNING: Previous log files of the same name are overwritten.
-script_summary_log_filename summaryLogFilename
Overrides the name of the TVScript summary log file.
WARNING: Previous summary log files with the same name are overwritten.
tvscript Example:
The following example is similar to that shown in Batch Debugging Using tvscript”.
tvscript \
-create_actionpoint "method1=>display_backtrace -show_arguments" \
-create_actionpoint "method2#37=>display_backtrace -show_locals -level 1" \
-event_action "error=>display_backtrace -show_arguments -show_locals" \
-display_specifiers "noshow_pid,noshow_tid" \
-maxruntime "00:00:30" \
filterapp -a 20
This script performs the following actions:
*Creates an action point at the beginning of method1. When tvscript reaches that breakpoint, it logs a backtrace and the method’s arguments.
*Creates an action point at line 37 of method2. When tvscript reaches this line, it logs a backtrace and the local variables. The backtrace information starts at level 1.
*Logs the backtrace, the current routine’s arguments, and its local variables when an error event occurs.
*Excludes the process ID and thread ID from the information that tvscript logs.
*Limits tvscript execution time to 30 sections.
*Names the program being debugged and passes a value of 20 to the application.