How to: Debug On a High-Performance Cluster
Debugging a multiprocessing program on a high-performance cluster is similar to debugging an ordinary program on a remote machine. There are some additional considerations, however. For remote cluster debugging setup requirements, see How to: Debug a Remote Cluster Application. For general remote setup requirements, see Remote Debugging Setup.
When debugging on a high-performance cluster, you can use all of the Visual Studio debugging windows and techniques that are available for remote debugging. Because you are debugging remotely, however, the external console window is not available.
The Threads window and Processes window are especially useful for debugging parallel applications. For tips on how to use these windows, see How to: Use the Processes Window and How to: Use the Threads Window.
The following procedures show some techniques that are especially useful when debugging on a high-performance cluster.
When debugging a parallel application, you may often have a need to set a breakpoint on a particular thread, process, or machine. You can do this by creating a normal breakpoint, then adding a breakpoint filter.
To open the Breakpoint Filter dialog box
Right-click a breakpoint glyph in a source window, the Disassembly window, the Call Stack window, or the Breakpoints window.
Choose Filter from the shortcut menu. It may be at the top level of the shortcut menu, or under Breakpoints.
To set a breakpoint on a specific machine
Get the machine name from the Processes window.
Select a breakpoint, and open the Breakpoint Filter dialog box as described in the previous procedure.
In the Breakpoint Filter dialog box, type:
MachineName =yourmachinename
To create a more complex filter, you can combine clauses using &, the AND operator, ||, the OR operator, !, the NOT operator, and parentheses.
Click OK.
To set a breakpoint on a specific process
Get the process name or process ID number from the Processes window.
Select a breakpoint, and open the Breakpoint Filter dialog box as in the first procedure.
In the Breakpoint Filter dialog box, type:
ProcessName = yourprocessname
—or—
ProcessID = yourprocessIDnumber
To create a more complex filter, you can combine clauses using &, the AND operator, ||, the OR operator, !, the NOT operator, and parentheses.
Click OK.
To set a breakpoint on a specific thread
Get the thread name or thread ID number name from the Threads window.
Select a breakpoint, and open the Breakpoint Filter dialog box as described in the first procedure.
In the Breakpoint Filter dialog box, type:
ThreadName = yourthreadname
—or—
ThreadID = yourthreadIDnumber
To create a more complex filter, you can combine clauses using &, the AND operator, ||, the OR operator, !, the NOT operator, and parentheses.
Click OK.
Example
The following example shows how to create a filter for a breakpoint on a machine named marvin
and a thread named fourier1
.
(MachineName = marvin) & (ThreadName = fourier1)
See Also
Tasks
How to: Debug a Remote Cluster Application
How to: Use the Processes Window
How to: Use the Threads Window
How to: Specify a Breakpoint Filter