Appendix A Glossary
action point
A debugger feature that lets a user request that program execution stop under certain conditions. Action points include breakpoints, watchpoints, eval points, and barriers.
action point identifier
A unique integer ID associated with an action point.
activation record
address space
A region of memory that contains code and data from a program. One or more threads can run in an address space. A process normally contains an address space.
addressing expression
A set of instructions that tell TotalView where to find information. These expressions are only used within the type transformation facility.
affected p/t set
The set of process and threads that are affected by the command. For most commands, this is identical to the target P/T set, but in some cases it might include additional threads. (See p/t (process/thread) set for more information.)
aggregate data
A collection of data elements. For example, a structure or an array is an aggregate.
aggregated output
The CLI compresses output from multiple threads when they would be identical except for the P/T identifier.
api
Application Program Interface. The formal interface by which programs communicate with libraries.
arena
A specifier that indicates the processes, threads, and groups upon which a command executes. Arena specifiers are p (process), t (thread), g (group), d (default), and a (all).
array section
In Fortran, a portion of an array that is also an array. The elements of this array is a new unnamed array object with its own indices. Compare this with a TotalView array slice.
array slice
A subsection of an array, which is expressed in terms of a lower bound, upper bound, and stride. Displaying a slice of an array can be useful when you are working with very large arrays. Compare this with a TotalView array section.
asynchronous
When processes communicate with one another, they send messages. If a process decides that it doesn’t want to wait for an answer, it is said to run “asynchronously.” For example, in most client/server programs, one program sends an RPC request to a second program and then waits to receive a response from the second program. This is the normal synchronous mode of operation. If, however, the first program sends a message and then continues executing, not waiting for a reply, the first mode of operation is said to be asynchronous.
attach
The ability for TotalView to gain control of an already running process on the same machine or a remote machine.
autolaunching
When a process begins executing on a remote computer, TotalView can also launch a tvdsvr (TotalView Debugger Server) process on the computer that will send debugging information back to the TotalView process that you are interacting with.
automatic process acquisition
TotalView automatically detects the many processes that parallel and distributed programs run in, and attaches to them automatically so you don’t have to attach to them manually. If the process is on a remote computer, automatic process acquisition automatically starts the TotalView Debugger Server (tvdsvr).
barrier point
An action point specifying that processes reaching a particular location in the source code should stop and wait for other processes to catch up.
base window
 
The original Process Window or Variable Window before you dive into routines or variables. After diving, you can use a Reset or Undive command to restore this original window.
blocked
A thread state in which the thread is no longer executing because it is waiting for an event to occur. In most cases, the thread is blocked because it is waiting for a mutex or condition state.
breakpoint
A point in a program where execution can be suspended to permit examination and manipulation of data.
bug
A programming error. Finding them is why you’re using TotalView.
bulk launch
A TotalView procedure that launches multiple tvdsvr processes simultaneously.
CAF
 
See CoArray Fortran.
call frame
The memory area that contains the variables belonging to a function, subroutine, or other scope division, such as a block.
call stack
A higher-level view of stack memory, interpreted in terms of source program variables and locations. This is where your program places stack frames.
callback
A function reference stored as a pointer. By using the function reference, this function can be invoked. For example, a program can hand off the function reference to an event processor. When the event occurs, the function can be called.
child process
A process created by another process (see parent process) when that other process calls the fork() function.
closed loop
cluster debugging
The action of debugging a program that is running on a cluster of hosts in a network. Typically, the hosts are of the same type and have the same operating system version.
CoArray Fortran (CAF)
 
A variation of Fortran with array syntax augmented to depict arrays distributed across processes.
command history list
A debugger-maintained list that stores copies of the most recent commands issued by the user.
condition synchronization
A process that delays thread execution until a condition is satisfied.
conditional breakpoint
A breakpoint containing an expression. If the expression evaluates to true, program stops. TotalView does not have conditional breakpoints. Instead, you must explicitly tell TotalView to end execution by using the $stop directive.
context switching
In a multitasking operating system, the ability of the CPU to move from one task to another. As a switch is made, the operating system must save and restore task states.
contextually qualified (symbol)
A symbol that is described in terms of its dynamic context, rather than its static scope. This includes process identifier, thread identifier, frame number, and variable or subprocedure name.
control group
All the processes that a program creates. These processes can be local or remote. If your program uses processes that it did not create, TotalView places them in separate control groups. For example, a client/­server program has two distinct executables that run independently of one another. Each would be in a separate control group. In contrast, processes created by the fork() function are in the same control group.
core file
A file that contains the contents of memory and a list of thread registers. The operating system dumps (creates) a core file whenever a program exits because of a severe error (such as an attempt to store into an invalid address).
core-file debugging
A debugging session that examines a core file image. Commands that modify program state are not permitted in this mode.
cpu
Central Processing Unit. The component within the computer that most people think of as “the computer”. This is where computation and activities related to computing occur.
cross-debugging
A special case of remote debugging where the host platform and the target platform are different types of machines.
current frame
The current portion of stack memory, in the sense that it contains information about the subprocedure invocation that is currently executing.
current language
 
The source code language used by the file that contains the current source location.
current list location
The location governing what source code appears in response to a list command.
dataset
A set of array elements generated by TotalView and sent to the Visualizer. (See visualizer process.)
dbelog library
A library of routines for creating event points and generating event logs from TotalView. To use event points, you must link your program with both the dbelog and elog libraries.
dbfork library
A library of special versions of the fork() and execve() calls used by TotalView to debug multi-process programs. If you link your program with the TotalView dbfork library, TotalView can automatically attach to newly spawned processes.
deadlock
A condition where two or more processes are simultaneously waiting for a resource such that none of the waiting processes can execute.
debugging information
Information relating an executable to the source code from which it was generated.
debugger prompt
A string printed by the CLI that indicates that it is ready to receive another user command.
debugger server
debugger state
Information that TotalView or the CLI maintains to interpret and respond to user commands. This includes debugger modes, user-defined commands, and debugger variables.
deprecated
A feature that is still available but might be eliminated in a future release.
disassembled code
A symbolic translation of binary code into assembler language.
distributed debugging
The action of debugging a program that is running on more than one host in a network. The hosts can be homogeneous or heterogeneous. For example, programs written with message-passing libraries such as Parallel Macros (PARMACS), run on more than one host.
diving
The action of displaying more information about an item. For example, if you dive into a variable in TotalView, a window appears with more information about the variable.
dll
Dynamic Link Library. A shared library whose functions can be dynamically added to a process when a function with the library is needed. In contrast, a statically linked library is brought into the program when it is created.
dope vector
This is a run time descriptor that contains all information about an object that requires more information than is available as a single pointer or value. For example, you might declare a Fortran 90 pointer variable that is a pointer to some other object, but which has its own upper bound, as follows:
integer, pointer, dimension (:) :: iptr
Suppose that you initialize it as follows:
iptr => iarray (20:1:-2)
iptr is a synonym for every other element in the first twenty elements of iarray, and this pointer array is in reverse order. For example, iptr(1) maps to iarray(20), iptr(2) maps to iarray(18), and so on.
A compiler represents an iptr object using a run time descriptor that contains (at least) elements such as a pointer to the first element of the actual data, a stride value, and a count of the number of elements (or equivalently, an upper bound).
dpid
Debugger ID. This is the ID TotalView uses for processes.
dynamic library
A library that uses dynamic loading to load information in an external file at runtime. Dynamic loading implies dynamic linking, which is a process that does not copy a program and its data into the executable at compile time.
editing cursor
A black line that appears when you select a TotalView GUI field for editing. You use field editor commands to move the editing cursor.
eval point
A point in the program where TotalView evaluates a code fragment without stopping the execution of the program.
event log
A file that contains a record of events for each process in a program.
event point
A point in the program where TotalView writes an event to the event log for later analysis with TimeScan.
exception
A condition generated at runtime that indicates that a non-standard event has occurred. The program usually creates a method to handle the event. If the event is not handled, either the program's result will be inaccurate or the program will stop executing.
executable
A compiled and linked version of source files
expression system
A part of TotalView that evaluates C, C++, and Fortran expressions. An expression consists of symbols (possibly qualified), constants, and operators, arranged in the syntax of a source language. Not all Fortran 90, C, and C++ operators are supported.
extent
The number of elements in the dimension of an array. For example, a Fortran array of integer(7,8) has an extent of 7 in one dimension (7 rows) and an extent of 8 in the other dimension (8 columns).
field editor
A basic text editor that is part of TotalView. The field editor supports a subset of GNU Emacs commands.
focus
The set of groups, processes, and threads upon which a CLI command acts. The current focus is indicated in the CLI prompt (if you’re using the default prompt).
frame
An area in stack memory that contains the information corresponding to a single invocation of a subprocedure. See stack frame.
frame pointer
fully qualified (symbol)
A symbol is fully qualified when each level of source code organization is included. For variables, those levels are executable or library, file, procedure or line number, and variable name.
garbage collection
Examining memory to determine if it is still be referenced. If it is not, it sent back to the program's memory manager so that it can be reused.
gid
The TotalView group ID.
global arrays
(from a definition on the Global Arrays web site) The Global Arrays (GA) toolkit provides an efficient and portable “shared-memory” programming interface for distributed-memory computers. Each process in a MIMD parallel program can asynchronously access logical blocks of physically distributed dense multi-dimensional arrays, without need for explicit cooperation by other processes. For more information, see http://hpc.pnl.gov/globalarrays/.
grid
A collection of distributed computing resources available over a local or wide area network that appears as if it were one large virtual computing system.
goi
The group of interest. This is the group that TotalView uses when it is trying to determine what to step, stop, and so on.
group
When TotalView starts processes, it places related processes in families. These families are called “groups.”
group of interest
The primary group that is affected by a command. This is the group that TotalView uses when it is trying to determine what to step, stop, and so on.
heap
An area of memory that your program uses when it dynamically allocates blocks of memory. It is also how people describe my car.
host computer
The computer on which TotalView is running.
image
All of the programs, libraries, and other components that make up your executable.
infinite loop
instruction pointer
See program counter.
initial process
The process created as part of a load operation, or that already existed in the runtime environment and was attached by TotalView or the CLI.
initialization file
An optional file that establishes initial settings for debugger state variables, user-defined commands, and any commands that should be executed whenever TotalView or the CLI is invoked. Must be called .tvdrc.
interpreter
A program that reads programming language statements and translates the statements into machine code, then executes this code.
laminate
A process that combines variables contained in separate processes or threads into a unified array for display purposes.
lhs expression
This is a synonym for lvalue.
linker
A program that takes all the object files creates by the compiler and combines them and libraries required by the program into the executable program.
lockstep group
All threads that are at the same PC (program counter). This group is a subset of a workers group. A lockstep group only exists for stopped threads. All threads in the lockstep group are also in a workers group. By definition, all members of a lockstep group are in the same workers group. That is, a lockstep group cannot have members in more than one workers group or more than one control group.
loop, infinite
lower bound
The first element in the dimension of an array or the slice of an array. By default, the lower bound of an array is 0 in C and 1 in Fortran, but the lower bound can be any number, including negative numbers.
lvalue
A symbol name or expression suitable for use on the left-hand side of an assignment statement in the corresponding source language. That is, the expression must be appropriate as the target of an assignment.
machine state
Convention for describing the changes in memory, registers, and other machine elements as execution proceeds.
manager thread
A thread created by the operating system. In most cases, you do not want to manage or examine manager threads.
message queue
A list of messages sent and received by message-passing programs.
mimd
An acronym for Multiple Instruction, Multiple Data, which describes a type of parallel computing.
misd
An acronym for Multiple Instruction, Single Data, which describes a type of parallel computing.
mpi
An acronym for “Message Passing Interface.”
mpich
MPI/Chameleon (Message Passing Interface/Chameleon) is a freely available and portable MPI implementation. MPICH was written as a collaboration between Argonne National Lab and Mississippi State University. For more information, see https://www.mcs.anl.gov/research/projects/mpi/.
mpmd programs
An acronym for Multiple Program, Multiple Data, which describes programs that involve multiple executables, executed by multiple threads and processes.
multitask
In the context of high performance computing, this is the ability to divide a program into smaller pieces or tasks that execute separately.
multi-process
The ability of a program to spawn off separate programs, each having its own context and memory. multi-process programs can (and most often do) run processes on more than one computer. They can also run multiple processes an one computer. In this case, memory can be shared
multi-threaded
The ability of a program to spawn off separate tasks that use the same memory. Switching from task to task is controlled by the operating system.
mutex (mutual exclusion)
Techniques for sharing resources so that different users do not conflict and cause unwanted interactions.
native debugging
The action of debugging a program that is running on the same machine as TotalView.
nested dive
TotalView lets you dive into pointers, structures, or arrays in a variable. When you dive into one of these elements, TotalView updates the display so that the new element appears. A nested dive is a dive within a dive. You can return to the previous display by selecting the left arrow in the top-right corner of the window.
node
A machine on a network. Each machine has a unique network name and address.
nullified
A breakpoint expression that, when reevaluated, points to an invalid address block.
off-by-one
An error usually caused by forgetting that arrays begin with element 0 in C and C++.
openmp
(from a definition on the OpenMP web site) OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify shared memory parallelism in Fortran and C/C++ programs. The MP in OpenMP stands for Multi Processing. We provide Open specifications for Multi Processing via collaborative work with interested parties from the hardware and software industry, government and academia. For more information, see https://openmp.org/.
out-of-scope
When symbol lookup is performed for a particular symbol name and it isn’t found in the current scope or any that contains scopes, the symbol is said to be out-of-scope.
page protection
The ability to segregate memory pages so that one process cannot access pages owned by another process. It can also be used to generate an exception when a process tries to access the page.
parallel program
A program whose execution involves multiple threads and processes.
parallel tasks
 
Tasks whose computations are independent of each other, so that all such tasks can be performed simultaneously with correct results.
parallelizable problem
A problem that can be divided into parallel tasks. This type of program might require changes in the code and/or the underlying algorithm.
parcel
The number of bytes required to hold the shortest instruction for the target architecture.
parent process
A process that calls the fork() function to spawn other processes (usually called child processes).
parmacs library
A message-passing library for creating distributed programs that was developed by the German National Research Centre for Computer Science.
partially qualified (symbol)
A symbol name that includes only some of the levels of source code organization (for example, file name and procedure, but not executable). This is permitted as long as the resulting name can be associated unambiguously with a single entity.
patching
Inserting code in a breakpoint that is executed immediately preceding the breakpoint's line. The patch can contain a GOTO command to branch around incorrect code.
pc
An abbreviation for Program Counter.
pid
Depending on the context, this is either the process ID or the program ID. In most cases, this is the process ID.
poi
The process of interest. This is the process that TotalView uses when it is trying to determine what to step, stop, and so on.
/proc
An interface that allows debuggers and other programs to control or obtain information from running processes. ptrace also does this, but /proc is more general.
process
An executable that is loaded into memory and is running (or capable of running).
process group
A group of processes associated with a multi-process program. A process group includes program control groups and share groups.
process/thread identifier
 
A unique integer ID associated with a particular process and thread.
process of interest
The primary process that TotalView uses when it is trying to determine what to step, stop, and so on.
program control group
A group of processes that includes the parent process and all related processes. A program control group includes children that were forked (processes that share the same source code as the parent), and children that were forked with a subsequent call to the execve() function (processes that don’t share the same source code as the parent). Contrast this with share group.
program event
A program occurrence that is being monitored by TotalView or the CLI, such as a breakpoint.
program state
A higher-level view of the machine state, where addresses, instructions, registers, and such are interpreted in terms of source program variables and statements.
p/t (process/thread) set
The set of threads drawn from all threads in all processes of the target program.
pthread ID
This is the ID assigned by the Posix pthreads package. If this differs from the system TID, it is a pointer value that points to the pthread ID.
queue
A data structure whose data is accessed in the order in which it was entered. This is like a line at a tollbooth where the first in is the first out.
race condition
A problem that occurs when threads try to simultaneously access a resource. The result can be a deadlock, data corruption, or a program fault.
remote debugging
The action of debugging a program that is running on a different machine than TotalView. The machine on which the program is running can be located many miles away from the machine on which TotalView is running.
resume commands
Commands that cause execution to restart from a stopped state: dstep, dgo, dcont, dwait.
rhs expression
This is a synonym for rvalue.
rvalue
 
An expression suitable for inclusion on the right-hand side of an assignment statement in the corresponding source language. In other words, an expression that evaluates to a value or collection of values.
satisfaction set
 
The set of processes and threads that must be held before a barrier can be satisfied.
satisfied
 
A condition that indicates that all processes or threads in a group have reached a barrier. Prior to this event, all executing processes and threads are either running because they have not yet hit the barrier, or are being held at the barrier because not all of the processes or threads have reached it. After the barrier is satisfied, the held processes or threads are released, which means they can be run. Prior to this event, they could not run.
scope
 
The region in your program in which a variable or a function exists or is defined. This region begins with its declaration and extends to the end of the current block.
search path
 
A list that contains places that software looks to locate files contained within the file system. In TotalView, the search path contains locations containing your program’s source code.
serial execution
 
Execution of a program sequentially, one statement at a time.
serial line debugging
 
A form of remote debugging where TotalView and the tvdsvr communicate over a serial line.
service thread
 
A thread whose purpose is to service or manage other threads. For example, queue managers and print spoolers are service threads. There are two kinds of service threads: those created by the operating system or runtime system and those created by your program.
share group
 
All the processes in a control group that share the same code. In most cases, your program has more than one share group. Share groups, like control groups, can be local or remote.
shared library
 
A compiled and linked set of source files that are dynamically loaded by other executables.
signals
 
Messages informing processes of asynchronous events, such as serious errors. The action that the process takes in response to the signal depends on the type of signal and whether the program includes a signal handler routine, a routine that traps certain signals and determines appropriate actions to be taken by the program.
simd
 
An acronym for Single Instruction, Multiple Data, which describes a type of parallel computing.
single process server launch
 
A TotalView procedure that individually launches tvdsvr processes.
single step
 
The action of executing a single statement and stopping (as if at a breakpoint).
sisd
 
An acronym for Single Instruction, Single Data, which describes a type of parallel computing.
slice
 
A subsection of an array, which is expressed in terms of a lower bound, upper bound, and stride. Displaying a slice of an array can be useful when you are working with very large arrays. Compare this with a TotalView array section.
soid
 
An acronym for symbol object ID. A SOID uniquely identifies all TotalView information. It also represents a handle by which you can access this information.
source file
 
Program file that contains source language statements. TotalView lets you debug FORTRAN 77, Fortran 90, Fortran 95, C, C++, and assembler files.
source location
For each thread, the source code line it executes next. This is a static location, indicating the file and line number; it does not, however, indicate which invocation of the subprocedure is involved.
spawned process
 
The process created by a user process executing under debugger control.
spmd programs
 
An acronym for Single Program, Multiple Data, which describe a type of parallel computing that involves just one executable, executed by multiple threads and processes.
stack
 
A portion of computer memory and registers used to hold information temporarily. The stack consists of a linked list of stack frames that holds return locations for called routines, routine arguments, local variables, and saved registers.
stack frame
 
Whenever your program calls a function, it creates a set of information that includes the local variables, arguments, contents of the registers used by an individual routine, a frame pointer pointing to the previous stack frame, and the value of the program counter (PC) at the time the routine was called. The information for one function is called a “stack frame” as it is placed on your program’s stack.
When your program begins executing, it has only one frame: the one allocated for function main(). As your program calls functions, new frames are allocated. When a function returns to the function from which it is called, the frame is deallocated.
stack pointer
 
A pointer to the area of memory where subprocedure arguments, return addresses, and similar information is stored. This is also called a frame pointer.
stack trace
 
A sequential list of each currently active routine called by a program, and the frame pointer that points to its stack frame.
static (symbol) scope
 
A region of a program’s source code that has a set of symbols associated with it. A scope can be nested inside another scope.
stepping
 
Advancing program execution by fixed increments, such as by source code statements.
stl
 
An acronym for Standard Template Library.
stop set
 
A set of threads that TotalView stops after an action point triggers.
stopped/held state
 
The state of a process whose execution has paused in such a way that another program event (for example, arrival of other threads at the same barrier) is required before it is capable of continuing execution.
stopped/runnable state
 
The state of a process whose execution has been paused (for example, when a breakpoint triggered or due to some user command) but can continue executing as soon as a resume command is issued.
stopped state
 
The state of a process that is no longer executing, but will eventually execute again. This is subdivided into stopped/runnable and stopped/held.
stride
 
The interval between array elements in a slice and the order in which TotalView displays these elements. If the stride is 1, TotalView displays every element between the lower bound and upper bound of the slice. If the stride is 2, TotalView displays every other element. If the stride is -1, TotalView displays every element between the upper bound and lower bound (reverse order).
symbol
 
Entities within program state, machine state, or debugger state.
symbol lookup
 
Process whereby TotalView consults its debugging information to discover what entity a symbol name refers to. Search starts with a particular static scope and occurs recursively so that contains scopes are searched in an outward progression.
symbol name
 
The name associated with a symbol known to TotalView (for example, function, variable, data type, and so on).
symbol table
 
A table of symbolic names used in a program (such as variables or functions) and their memory locations. The symbol table is part of the executable object generated by the compiler (with the -g option) and is used by debuggers to analyze the program.
synchronization
 
A mechanism that prevents problems caused by concurrent threads manipulating shared resources. The two most common mechanisms for synchronizing threads are mutual exclusion and condition synchronization.
target computer
 
The computer on which the process to be debugged is running.
target process set
 
The target set for those occasions when operations can only be applied to entire processes, not to individual threads in a process.
target program
 
The executing program that is the target of debugger operations.
target p/t set
 
The set of processes and threads that a CLI command acts on.
task
 
A logically discrete section of computational work. (This is an informal definition.)
thread
 
An execution context that normally contains a set of private registers and a region of memory reserved for an execution stack. A thread runs in an address space.
thread execution state
 
The convention of describing the operations available for a thread, and the effects of the operation, in terms of a set of predefined states.
thread of interest
 
The primary thread affected by a command. This is abbreviated as TOI.
tid
 
The thread ID. On some systems (such as AIX where the threads have no obvious meaning), TotalView uses its own IDs.
tla
 
An acronym for Three-Letter Acronym. So many things from computer hardware and software vendors are referred to by a three-letter acronym that yet another acronym was created to describe these terms.
toi
 
The thread of interest. This is the primary thread affected by a command.
trigger set
 
The set of threads that can trigger an action point (that is, the threads upon which the action point was defined).
triggers
 
The effect during execution when program operations cause an event to occur (such as arriving at a breakpoint).
ttf
 
trap
 
An instruction that stops program execution and which allows a debugger to gain control over your program.
tvdsvr process
 
The TotalView Debugger Server process, which facilitates remote debugging by running on the same machine as the executable and communicating with TotalView over a TCP/IP port or serial line.
type transformation facility
 
This is abbreviated as TTF. A TotalView subsystem that allows you to change the way information appears. For example, an STL vector can appear as an array.
undiscovered symbol
 
A symbol that is referred to by another symbol. For example, a typedef is a reference to the aliased type.
undiving
 
The action of displaying the previous contents of a window, instead of the contents displayed for the current dive. To undive, you click the undive icon in the upper-right corner of the window.
upc
 
(from a definition on the UPC web site) The Unified Parallel C language, which is an extension to the C programming language that is designed for high performance computing on large-scale parallel machines. The language provides a uniform programming model for both shared and distributed memory hardware. The programmer is presented with a single shared, partitioned address space, where variables may be directly read and written by any processor, but each variable is physically associated with a single processor. See http://upc.lbl.gov/ for more information.
upper bound
 
The last element in the dimension of an array or the slice of an array.
user thread
 
A thread created by your program.
user interrupt key
 
A keystroke used to interrupt commands, most commonly defined as Ctrl+C.
variable window
 
A TotalView window that displays the name, address, data type, and value of a particular variable.
visualization
 
In TotalView, visualization means graphically displaying an array’s values.
visualizer process
 
A process that works with TotalView in a separate window, allowing you to see a graphic representation of program array data.
watchpoint
 
An action point that tells TotalView to stop execution when the value of a memory location changes.
worker thread
 
A thread in a workers group. These are threads created by your program that performs the task for which you’ve written the program.
workers group
 
All the worker threads in a control group. Worker threads can reside in more than one share group.