Differences Between Device And Desktop Debuggers
Device debuggers support most of the same features that desktop debuggers support, with the following exceptions.
Edit and Continue Not Supported
Device debuggers do not support the ability to modify the source and continue while in break mode. If you want to modify your code while debugging, you must stop debugging, edit your code, and then restart with the modified sources. If you try to change your code while in break mode, the debugger issues a warning.
Function Evaluation Not Supported in Native Debugger
The native device debugger does not support function evaluation. You cannot type an expression that contains a function and have it evaluated with returned results.
The managed device debugger does support function evaluation.
Interop Debugging Limitations
You cannot debug native and managed code in a single instance of the debugger.
To debug applications that have mixed native and managed code (or managed code that uses pInvoke), set breakpoints in each section where you want to begin to step through your code. Then, attach whichever debugger is required for a certain section (for example, a managed section). Detach that debugger and attach the other when it is needed. You can repeat these detach/attach steps as often as that is required to step through your program. For more information, see Walkthrough: Debugging a Solution that Includes Both Managed and Native Code.
Using the two debugging instances at the same time on the same process is currently not supported.
Attribute-Based Debugging Not Supported
The .NET Compact Framework does not currently support attribute-based debugging. Thus, the ability to define attributes for visualizers and so on is unavailable for users of the device debuggers.
Desktop Debugging Not Supported
You cannot use the device debuggers to debug applications written for the desktop. Use the desktop debuggers instead.
Kernel Debugging Not Supported
You cannot use the device debuggers for kernel debugging.
Just My Code Debugging Not Supported
You cannot use Just My Code debugging.
Runtime Debugger (Cordbg.exe) Additions
The Runtime Debugger helps tools vendors and developers find and fix bugs in programs that target the .NET Framework common language runtime (CLR). Device projects add a new command and a new mode argument to the Runtime Debugger. The syntax for the new command and mode argument (inside a Cordbg.exe session) is described in the following table.
For more information and complete syntax, see Runtime Debugger (Cordbg.exe).
Command |
Description |
---|---|
m[ode] EmbeddedCLR {0|1} |
EmbeddedCLR is a mode argument that sets the debugger to target device projects. To control this setting, specify 1 for on or 0 for off. |
conn[ect] machine_name port |
Connects to a remote embedded CLR device. Parameters:
|
Connection Issues
Turning off the device while the debugger is running causes the debugger to close because of the connection failure. The connection failure occurs because the application is still running in the background on the device. The X button on the Pocket PC is a smart minimize feature and does not close the application. Instead it sets the application to run in the background.
To correctly close an application that is running in the background on a Pocket PC, follow these steps:
From the Start menu, select Settings, click the System tab, and then tap Memory. On the Running Programs tab, tap the application that you want to close, and tap Stop.