Command Line Debugging Revisited - Part 3: Process Control
In the previous parts of this series, I talked about
getting started with MDbg and
using the Device Emulator. Today, I would like to talk about how to use MDbg to control processes on the device being debugged.
Commandscp[roc]
kp[roc]
pro[cessenum]
The cp[roc] command - Running a process without attaching the debuggerIn my
getting started post, I talked about how to connect to the NetCFLaunch application and start an application for debugging. While I typically want to debug the process that I launch, there are instances where I wish to start a process without debugging. To do so, I use the
cp[roc] command as shown in the example below.
mdbg> cp "\program files\webcrawler.exe"If the command is able to start the process, the mdbg> prompt will be displayed. If it is unable to start the process (ex: the application could not be found) an error message will be displayed.
The pro[cessenum] command - Listing the processes running on the deviceIt is often interesting to know exactly what processes are running on your device. Perhaps your application relies upon another process for some data or to perform a particular task. Using the
pro[cessenum] command allows you to verify whether or not the partner process is running. The example, below, shows the processes running on my Windows Mobile 5.0 Pocket PC device.
mdbg> pro
Active processes on current machine:
(PID: 0x0dcb4002) NK.EXE
(PID: 0xedca5752) filesys.exe
(PID: 0x8dadc526) device.exe
(PID: 0xcd7f62ea) shell32.exe
(PID: 0xcd97c7a6) gwes.exe
(PID: 0xcd7f6732) services.exe
(PID: 0x2d4b6da6) CommLoader.exe
(PID: 0xcd517ac2) BatteryIndicator.exe
(PID: 0x2d5219ea) connmgr.exe
(PID: 0xad517b8a) srvtrust.exe
(PID: 0xed810392) repllog.exe
(PID: 0x2d4b6c76) poutlook.exe
(PID: 0xed3affce) cprog.exe
(PID: 0x2d99977a) rapiclnt
(PID: 0xeced62b2) webcrawler.exe
(PID: 0x2d0ed5be) tmail.exe
(PID: 0x8d30f68a) netcflaunch.exe
In looking at the process list, we can see that my earlier call to the
cp[roc] command successfully loaded webcrawler.exe.
The kp[roc] command - Terminating a running processThere are a number of situations where being able to terminate a running process can be desirable. I find this most useful when I wish to explore failure code paths when my applications leverage another process. The following example shows using the
kp[roc] command to terminate the webcrawler.exe process that I started with the
cp[roc] command..
mdbg> kp 0xeced62b2The value passed to the
kp[roc] command is the process identifier (PID) listed by the
pro[cessenum] command.
(PID: 0xeced62b2) webcrawler.exe
| Note: Please take care when terminating a process on your device. Forcibly exiting the wrong application can lead to instability or an unresponsive device. |
| Tip: Use QuickEdit Mode or the Mark and Paste features of the Command Prompt to enable cut and paste within MDbg. |
Enjoy!
-- DK
[Edit: fix formatting]
Disclaimer(s): This posting is provided "AS IS" with no warranties, and confers no rights.