Setting Initial Debug Zones (Windows CE 5.0)
You can set initial debug zones in the registry on the development workstation or on the target device. In addition, you can set debug zones in your code, from the kernel debugger, and from the Target Control window.
If you set the registry value in the registries of both the development workstation and the target device, the value on the development workstation takes precedence over the value on the target device. The caller queries the value on the target device if it cannot reach the development workstation or if the registry on the development workstation does not contain a value for the module.
Development workstation registry
Routines on the development workstation read the registry key HKEY_CURRENT_USER\Pegasus\Zones and search for the module name, specified in the DBGPARAM macro.
If the key exists, SetDbgZone uses the stored debug zone mask to update the debug zone name in the DBGPARAM macro.
Target device registry
You can also set the initial debug zones of a specific module on the target device by modifying the registry of the target device to override the default value of the zone mask.
In the HKEY_LOCAL_MACHINE\DebugZones registry key on the target device, create a registry entry with the name of the debug zone and a DWORD value equal to a zone mask.
For example, to turn on the first five debug zones for a module named VoIPPhone, create a VoIPPhone entry with DWORD value 0x001F.
When you set the registry value on the target device, use the same registry value that you use on the development workstation.
Within code
From within a module, you can change the zone settings during run-time from code. For more information about the existing zones, see Viewing Debug Zones for a Module.
For example, the following code line changes the zone settings from within a module:
dpCurSettings.ulZoneMask = 0x00000001
If you want to change the zones for one module using code that is inside another application or module, use the SetDbgZone.
DBGPARAM dbg; // OK uninitialized, receives new settings SetDbgZone(hProcess, hModule, 0, dwZone, &dbg);
Use hProcess=0 if you are controlling a DLL; use hModule=0 if you are controlling a process.
Kernel debugger
You can change zone settings from the debugger at a breakpoint by opening a watch window and typing
{,,myapp.exe}dpCurSettings.ulZoneMask
- OR -
{,,mydll.dll}dpCurSettings.ulZoneMask
And then modifying the value. When you continue execution, the new debug zones will be used.
For more information, see Watch Window.
Example
The following code example shows how to associate a bitmask with a debug zone. In this example, an application header file defines 16 (0–15) debug zones.
#define ZONEID_INIT 0
#define ZONEID_SECOND 1
#define ZONEID_EXCEPT 2
.
#define ZONEID_ERROR 15
After defining a debug zone to a bitmask, associate a debug zone mask name with the defined bitmask. A debug zone mask is a named bitmask that is used to turn a debug zone on or off.
The following code example shows how to associate debug zone mask names with the 16 previously defined debug zones.
#define ZONEMASK_INIT (1<<ZONEID_INIT)
#define ZONEMASK_SECOND (1<<ZONEID_SECOND)
#define ZONEMASK_EXCEPT (1<<ZONEID_EXCEPT)
.
#define ZONEMASK_ERROR (1<<ZONEID_ERROR)
See Also
Understanding the Debug Zones Dialog Box | Debug Zone Registration
Send Feedback on this topic to the authors