Automatically Acquiring PVM Processes
When you start TotalView as part of a PVM debugging session, TotalView takes the following actions:
• TotalView makes sure that no other PVM taskers are running. If TotalView finds a tasker on a host that it is debugging, it displays the following message and then exits:
Fatal error: A PVM tasker is already running on host 'host'
• TotalView finds all the hosts in the PVM configuration. Using the pvm_spawn() call, TotalView starts a TotalView Server (tvdsvr) on each remote host that has the same architecture type as the host TotalView is running on. It tells you it has started a debugger server by displaying the following message:
Spawning TotalView Debugger Server onto PVM
host 'host'
If you add a host with a compatible computer architecture to your PVM debugging session after you start TotalView, it automatically starts a debugger server on that host.
After all debugger servers are running, TotalView intercepts every PVM task created with the pvm_spawn() call on hosts that are part of the debugging session. If a PVM task is created on a host with a different computer architecture, TotalView ignores that task.
When TotalView receives a PVM tasker event, the following actions occur:
1. TotalView reads the symbol table of the spawned executable.
2. If a saved breakpoint file for the executable exists and you have enabled automatic loading of breakpoints, TotalView loads breakpoints for the process.
3. TotalView asks if you want to stop the process before it enters the main() routine.
If you answer
Yes, TotalView stops the process before it enters
main() (that is, before it executes any user code). This allows you to set breakpoints in the spawned process before any user code executes. On most computers, TotalView stops a process in the
start() routine of the
crt0.o module if it is statically linked. If the process is dynamically linked, TotalView stops it just after it finishes running the dynamic linker. Because the Process Window displays assembler instructions, you need to use the
View > Lookup Function command to display the source code for
main().