Using TotalView Variables
TotalView variables that let you access special thread and process values. All variables are 32-bit integers, which is an int or a long on most platforms. The following table describes built-in variables:
Name | Returns |
$clid | The cluster ID. (Interpreted expressions only.) |
$duid | The TotalView-assigned Debugger Unique ID (DUID). (Interpreted expressions only.) |
$newval | The value just assigned to a watched memory location. (Watchpoints only.) |
$nid | The node ID. (Interpreted expressions only.) |
$oldval | The value that existed in a watched memory location before a new value modified it. (Watchpoints only.) |
$pid | The process ID. |
$processduid | The DUID (debugger ID) of the process. (Interpreted expressions only.) |
$systid | The thread ID assigned by the operating system. When this is referenced from a process, TotalView throws an error. |
$tid | The thread ID assigned by TotalView. When this is referenced from a process, TotalView throws an error. |
The built-in variables let you create thread-specific breakpoints from the expression system. For example, the $tid variable and the $stop built-in function let you create a thread-specific breakpoint, as the following code shows:
if ($tid == 3)
$stop;
This tells TotalView to stop the process only when the third thread evaluates the expression.
You can also create complex expressions using these variables; for example:
if ($pid != 34 && $tid > 7)
printf (“Hello from %d.%d\n”, $pid, $tid);
Using any of the following variables means that the evalpoint is interpreted instead of compiled: $clid, $duid, $nid, $processduid, $systid, $tid, and $visualize. In addition, $pid forces interpretation on AIX.
You can’t assign a value to a built-in variable or obtain its address.