Program nodes
In the debugger architecture, a program node:
Is a lightweight description of a program.
Can identify itself and the process it's running in. A program node can be attached to, be detached from, and describe the debug engine (DE) that created it, if any.
Is represented by an IDebugProgramNode2 interface, typically created by a DE or port. Program nodes are added to a port by calling AddProgramNode. When a program node is added to a port, it's added to the process containing the program that this program node represents.
Sometime after a debug session is started, depending on the implementation of the debug package, program nodes are used to create corresponding programs. When a process is queried for its programs, the programs are enumerated, one for each program node.
Before a program is attached to, the IDE needs only a lightweight description of the program. This information can be obtained from the program node. Once the program is attached to, the IDE displays more detailed information, such as a list of all threads running in the program. This information is obtained from the program itself.