The Starting and Restarting the Workplace Shell technique can also be used when a source level debugger is needed. Follow the same steps as outlined in that section, but instead of simply invoking PMSHELL, invoke the debugger, as follows:
IPMD PMSHELL
The debugger initializes, but the Workplace Shell does not start running. The steps to be followed are:
The Workplace Shell will then initialize (very slowly) and the debugger will stop when one of the specified breakpoints is reached.
Debugging a Workplace Shell application using IPMD will be much the same as debugging a PM application. Remember that if you manually enter the name of a class or instance variable into IPMD, you must prefix the name with somThis instead of using the underscore ( _ ) macro. In the sample code fragment illustrated in the following figure, to manipulate the _hIcon variable in IPMD, use somThishIcon instead of _hIcon (selecting _hIcon with the mouse works as expected).
/****************************************************//* Method: wpclsInitData */
/* */
/* This sample shows how to initialize class data */
/ * associated with MyDataBase. */
/****************************************************/
SOM_Scope void SOMLINK MyDataBaseM_wpclsInitData(M_MyDataBase *somSelf)
{
/* M_MyDataBaseData *somThis = M_MyDataBaseGetData(somSelf); */
M_MyDataBaseMethodDebug("M_MyDataBase","MyDataBaseM_wpclsInitData");
hModule = _clsQueryModuleHandle(somSelf);
_hIcon = WinLoadPointer(HWND_DESKTOP, hModule, ID_WINDOW);
parent_wpclsInitData(somSelf);
}