The debug database provides a high-level interface LabVIEW uses to debug an application running on an embedded target. The debug daemon uses data from the debug database to translate LabVIEW object IDs into absolute addresses and absolute addresses of pending breakpoints back to LabVIEW IDs so LabVIEW can highlight the corresponding nodes. The debug daemon uses the OCDI debugging plug-in VIs, which are emulator-specific VIs that instrument actual emulator hardware. All OCDI debugging plug-in VIs must implement a common set of methods the debug daemon can call to set a breakpoint, clear a breakpoint, get a breakpoint, read target memory, write target memory, and so on. The debug daemon completely isolates LabVIEW and the emulator from each other. The LabVIEW debugger does not know anything about absolute object addresses and the user emulator interface. The OCDI debugging plug-in VIs do not have to deal with internal LabVIEW object IDs.