老狼的话:David Kline是.NET CF团队一位非常优秀的开发者,看到他这个系列文章已经很久了,一直没空翻译。今天用下班后的时间翻译出来,也是希望有个督促,能让这个系列文章让更多朋友认识。原文地址:
http://blogs.msdn.com/davidklinems/archive/2006/08/11/695975.aspx
在这个系列的前两篇文章中,我讨论了
MDbg的入门和
使用设备模拟器。这次,我们来讨论如何使用MDbg在调试过程中来控制设备上的进程。
Commands
cp[roc]
kp[roc]
pro[cessenum]
cp[roc]命令:运行一个进程,不将调试器attach到进程中
在我的
第一篇文章中,我谈到了如何连接NetCFLaunch应用程序,和开始调试一个应用程序。那时我想调试所运行的进程,如果我想启动一个进程,但不进行调试。我会使用cp[roc]命令,示例如下:
mdbg> cp "\program files\webcrawler.exe"
如果命令能够启动一个进程,mdbg>的提示符将会出现。如果不能启动一个进程(例如:应用程序不存在),将会有一个错误提示出现。
pro[cessenum] 命令:列出当前设备中运行的进程
如果你经常需要了解哪些进程运行在你的设备上。例如,你的应用程序需要依赖于其他进程所提供的数据或者执行特别的人物。使用pro[cessenum]命令允许你检查所依赖的进程是否在运行。下面的例子是显示运行在你的Windows Mobile 5.0 Pocket PC上的进程:
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
查看这个进程列表,我们可以看到早先调用cp[roc]命令时成功地运行了webcrawler.exe。
Kp[roc]命令:终止一个运行的进程
有一些情况下,我们需要终止一个进程的运行。当我的应用程序与其他进程通讯时,我需要研究失败代码路径,这将是非常有用的。下面的例子中,我使用kp[roc]命令来终止webcrawler.exe进程,这个进程是我用cp[roc]命令启动的。
mdbg> kp 0xeced62b2
传递给kp[roc]命令的值是被pro[cessenum]命令列出的进程ID(PID)。
(PID: 0xeced62b2) webcrawler.exe
注意:在终止设备上的进程时请务必小心,强制终止了错误的应用程序可能会让设备产生不稳定情况,或者相应迟缓。(译者注:NK.EXE、filesys.exe、device.exe、shell32.exe、gwes.exe和services.exe是系统运行相关的进程,所以不能强制终止。)
提示:使用命令行提示窗体中的QuickEdit模式或Mark and Paste功能可以让MDbg使用剪切和拷贝功能。
Enjoy!
-- DK