Partager via


Breakpoint Functionality

The eXDI component should encapsulate its own inner functionality, including breakpoint instantiation details. For example, it should sanitize the memory it presents to its clients. It should not show its managed software breakpoint trap instructions, only the underlying instructions. In the case of embedded breakpoints, eXDI should not sanitize the memory presented. The sanitization should function in read/write and virtual/physical memory.

The driver should attempt to handle all areas of all breakpoints, in a compromise with efficiency. In the case where two or more breakpoints overlap areas they cover, this rule still applies. The driver can save resources by merging several virtual breakpoints into a single physical breakpoint when possible. For example, if two breakpoints are identical, the eXDI driver should instantiate one instance of the breakpoint. If the first data breakpoint is specifying a break on "Read byte at address 0x0050010", and a second data breakpoint specifies a break on "Write byte at address 0x0050010", then while both are enabled, a single "Any byte access at address 0x0050010" data breakpoint can be instantiated.

More aggressive resource-friendly algorithms can also be used, such as setting a breakpoint that covers more than the union of several virtual breakpoints. The user should be able to deactivate that algorithm to avoid slow-down due to false triggers, an important characteristic for real-time systems.

Hardware code breakpoints and data breakpoints should survive as long as possible, even through discarding virtual memory or resetting the target. Software breakpoints do not have guaranteed life duration. If the target is stopped at an address containing a breakpoint, and a restart is requested, the target should not start running. It should remain at the same location and report a halt notification for a breakpoint. That means that eXDI does not support breakpoint step over and reset. The client owning the breakpoint must handle step over and reset.

See Also

Breakpoints | Extended Debugging Interface

 Last updated on Friday, October 08, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.