dcalltree
Displays parallel backtrace data
Format 
dcalltree [-datapbv_data_array] [-show_details] [-sortcolumns] [-hide_backtrace] [-save_as_csvfilename] [‑save_as_dotfilename]
Arguments 
-datapbv_data_array
Captures the data from calling dcalltree in an associative Tcl array rather than writing the data to the console.
-show_details
Displays the data with all processes and threads displayed.
-hide_backtrace
Displays the data with only root and leaf nodes displayed.
-sort column
Sorts the data display based on the data in a particular column. The possible arguments are Processes, Location, PC, Host, Rank, ID, and Status.
-save_as_csvfilename
Saves the backtrace data as a file of comma-separated values under the name filename.
-save_as_dotfilename
Saves the backtrace data as a dot file under the name filename. Dot is a plain text graph description language.
Description 
The dcalltree command shows the state of processes and threads in a parallel job. Normally the output is written to the console, but the -data subcommand makes the data available as a Tcl associative array. The associative array has the following format:
{
{
Key <value>
Level <value>
Processes <value>
Location <value>
PC <value>
Host <value>
Rank <value>
ID <value>
Status <value>
}
{
...
}
}
 
The data displayed by this command is similar to the data displayed in the Parallel Backtrace View window.
The -show_details and -hide_backtrace switches pull in opposite directions. The ‑show_details switch shows the maximum data, including all processes and threads. The -hide_backtrace command hides any intermediate nodes, displaying only the root and leaf nodes. If used together, this results in a display of root and leaf nodes and all threads. This reduction can help to de-clutter the data display if the number of processes and threads is large.
Command alias 
Alias
Definition
Description
ct
dcalltree
Prints data to console
ctd
dcalltree -data
Puts data in a Tcl associative array
ctsd
dcalltree -show_details
Prints more complete data
ctshb
dcalltree -hide_backtrace
Prints data only on root and leaf nodes
 
Examples 
dfocus group dcalltree
This example first changes the focus to the group using dfocus, then calls dcalltree with no switches. Note that the ID column is a compressed ptlist describing process and thread count, range, and IDs. See Compressed List Syntax (ptlist) for more information.
Processes Location PC Host Rank ID Status
--------- -------- -- ---- ---- -- ------
12 / ... <local> -1 4:12[p1-4.1-3] ...
4 _start 0x004011b9 <local> -1 4:4[p1-4.1] ...
4 __libc_start_main 0x2b3425358184 <local> -1 4:4[p1-4.1] ...
4 main 0x004035bf <local> -1 4:4[p1-4.1] ...
4 fork_wrapper 0x00402790 <local> -1 4:4[p1-4.1] ...
4 forker 0x0040274b <local> -1 4:4[p1-4.1] ...
4 snore 0x00401c11 <local> -1 4:4[p1-4.1] ...
1 snore#681 0x00401c05 <local> -1 2.1 - 47502964801120 Stopped
1 snore#705 0x00401c9b <local> -1 4.1 - 47502964801120 Breakpoint
2 wait_a_while 0x00401a09 <local> -1 2:2[p1.1, p3.1] Stopped
2 __select_nocancel 0x2b34253f56e2 <local> -1 2:2[p1.1, p3.1] Stopped
8 start_thread 0x2b3424db1143 <local> -1 4:12[p1-4.1-3] ...
8 snore_or_leave 0x004021cb <local> -1 4:8[p1-4.2-3] ...
8 snore ... <local> -1 4:8[p1-4.2-3] ...
1 snore#681 0x00401c05 <local> -1 1.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 1.3 - 1090525504 Stopped
1 snore#705 0x00401c9b <local> -1 2.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 2.3 - 1090525504 Stopped
1 snore#681 0x00401c05 <local> -1 4.2 - 1082132800 Stopped
1 snore#681 0x00401c05 <local> -1 4.3 - 1090525504 Stopped
2 wait_a_while ... <local> -1 1:2[p3.2-3] ...
 
--------------------------------------------
dcalltree -show_details
By adding the -show_details, switch, you get more complete output:
Processes Location PC Host Rank ID Status
--------- -------- -- ---- ---- -- ------
12 / ... <local> -1 4:12[p1-4.1-3] ...
4 _start 0x004011b9 <local> -1 4:4[p1-4.1] ...
4 __libc_start_main 0x2b3425358184 <local> -1 4:4[p1-4.1] ...
4 main 0x004035bf <local> -1 4:4[p1-4.1] ...
4 fork_wrapper 0x00402790 <local> -1 4:4[p1-4.1] ...
4 forker 0x0040274b <local> -1 4:4[p1-4.1] ...
4 snore 0x00401c11 <local> -1 4:4[p1-4.1] ...
1 snore#681 0x00401c05 <local> -1 2.1 - 47502964801120 Stopped
1 snore#705 0x00401c9b <local> -1 4.1 - 47502964801120 Breakpoint
2 wait_a_while 0x00401a09 <local> -1 2:2[p1.1, p3.1] Stopped
2 __select_nocancel 0x2b34253f56e2 <local> -1 2:2[p1.1, p3.1] Stopped
1 __select_nocancel 0x2b34253f56e2 <local> -1 1.1 - 47502964801120 Stopped
1 __select_nocancel 0x2b34253f56e2 <local> -1 3.1 - 47502964801120 Stopped
8 start_thread 0x2b3424db1143 <local> -1 4:12[p1-4.1-3] ...
8 snore_or_leave 0x004021cb <local> -1 4:8[p1-4.2-3] ...
8 snore ... <local> -1 4:8[p1-4.2-3] ...
1 snore#681 0x00401c05 <local> -1 1.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 1.3 - 1090525504 Stopped
1 snore#705 0x00401c9b <local> -1 2.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 2.3 - 1090525504 Stopped
1 snore#681 0x00401c05 <local> -1 4.2 - 1082132800 Stopped
1 snore#681 0x00401c05 <local> -1 4.3 - 1090525504 Stopped
2 wait_a_while ... <local> -1 1:2[p3.2-3] ...
1 __select_nocancel 0x2b34253f56e2 <local> -1 3.3 - 1090525504 Stopped
1 wait_a_while#580 0x004019e9 <local> -1 3.2 - 1082132800 Breakpoint
 
--------------------------------------------
dcalltree -show_details -hide_backtrace
Adding the -hide_backtrace switch reduces the clutter somewhat:
Processes Location PC Host Rank ID Status
--------- -------- -- ---- ---- -- ------
12 / ... <local> -1 4:12[p1-4.1-3] ...
1 __select_nocancel 0x2b34253f56e2 <local> -1 3.3 - 1090525504 Stopped
1 __select_nocancel 0x2b34253f56e2 <local> -1 1.1 - 47502964801120 Stopped
1 __select_nocancel 0x2b34253f56e2 <local> -1 3.1 - 47502964801120 Stopped
1 snore#681 0x00401c05 <local> -1 2.1 - 47502964801120 Stopped
1 snore#705 0x00401c9b <local> -1 4.1 - 47502964801120 Breakpoint
1 snore#681 0x00401c05 <local> -1 1.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 1.3 - 1090525504 Stopped
1 snore#705 0x00401c9b <local> -1 2.2 - 1082132800 Breakpoint
1 snore#681 0x00401c05 <local> -1 2.3 - 1090525504 Stopped
1 snore#681 0x00401c05 <local> -1 4.2 - 1082132800 Stopped
1 snore#681 0x00401c05 <local> -1 4.3 - 1090525504 Stopped
1 wait_a_while#580 0x004019e9 <local> -1 3.2 - 1082132800 Breakpoint
 
--------------------------------------------
Here is code to get the location of all threads that are at a breakpoint:
dcalltree -data pbv_data_array -show_details
foreach { data_record } [array get pbv_data_array] {
set print_location 0
set break_location
foreach {title value} $data_record {
if {$title == "Location"} {
set break_location $value
}
if {$value == "Breakpoint"} {
set print_location 1
}
if {1 == $print_location} {
puts stdout "Breakpoint found at $break_location"
set print_location 0
}
}
}
Related Topics