当前位置: 首页 > news >正文

.NET CF命令行调试器MDbg入门(一)

.NET CF命令行调试器MDbg入门(一)

认识MDbg和.NET Compact Framework 2.0 SP1

老狼的话:David Kline是.NET CF团队一位非常优秀的开发者,看到他这个系列文章已经很久了,一直没空翻译。今天用下班后的时间翻译出来,也是希望有个督促,能让这个系列文章让更多朋友认识。原文地址:http://blogs.msdn.com/davidklinems/archive/2006/07/13/665023.aspx

现在距离我写如何在.NET Compact Framework中使用命令行调试器(cordbg)的文章,已经有一段时间了。在这段时间里.NET CF的命令行调试已经发生了很大的变化。

去年发布的.NET Framewrok SDK 2.0中,出现了一个新的命令行调试器(MDbg)。MDbg是使用托管代码编写的,并且可以通过扩展程序集(DLLs)来添加新功能。在我们发布2.0版本的时候,这个扩展功能还没有被.NET CF所支持。不过当.NET CF 2.0 SP1发布的时候,我们的扩展程序集(mdbgnetcf.dll)已经可用了。

如果您读过我最初的命令行调试器系列文章,您也许会回忆起在.NET CF 1.0中得到命令行调试环境的几个步骤。我高兴地宣布,我们通过MDbg扩展开始的步骤要简单很多。我会在今天的文章里介绍如何为设备添加mdbgnetcf扩展,并运行命令。

预备步骤


在我们开始使用MDbg调试一个.NET CF应用程序之前,有一些准备工作是我们必须完成的。
1. 下载并安装.NET Compact Framework 2.0 SP1
2. 更新你的设备到.NET CF SP1
3. 拷贝下列文件到设备的\Windows目录中
a) 从 <drive>:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\wce400\<cpu>
i. edbgtl.dll
ii. tcpconnectiona.dll
b) 从SP1的安装目录 (比如 <drive>:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\<version>\<cpu>
i. netcfrtl.dll
ii. netcflaunch.exe
4. 将你的应用程序文件部署到设备上
对于一台设备,步骤2和3只需要准备一次。步骤1每台开发、调试PC只需要准备一次。步骤4在每次应用程序更新后需要进行。

开始


一旦准备任务完成,我们可以使用MDbg开始调试我们的程序了。
1. 运行mdbg.exe
我推荐从Visual Studio 2005 Command Prompt中运行MDbg(Start Menu\All Programs\Microsoft Visual Studio 2005\Visual Studio Tools)或者SDK Command Prompt(Start Menu\All Programs\Microsoft .NET Framework SDK v2.0).这将保证MDbg.exe在搜索路径中。
2. 加载mdbgnetcf扩展
mdbg>load <path>\mdbgnetcf
请注意在使用load命令时,文件扩展名(.dll)是不用写的。
当扩展被加载后,会显示出下面的信息:
.NET Compact Framework extension loaded successfully.
3. 在设备中运行NetCFLaunch.exe
当NetCFLaunch启动,将会显示连接到设备所必须的传送参数(例如:169.254.2.1 6510)。我们将在下一步用到这个传送参数。
4. 使用device命令连接到设备
device 169.254.2.1 6510
当device命令成功完成,我们将与NetCFLaunch程序建立一个连接。NetCFLaunch窗口将显示“Connection SUCCEEDED”。
5. 使用run命令运行你的应用程序
我将使用Visual Studio 2005中的WebCrawler示例程序
run "\program files\webcrawler.exe"
当run命令完成,MDbg将显示当前的source位置(应用程序的入口点)。
STOP: Breakpoint Hit
288: {
[p#:0, t#:0] mdbg>
注意:Mdbug涉及的初始或临时断点被调试器管理,当MDbg连接到应用程序时,断点被插入或清除。
现在你可以使用其他的MDbg命令来调试你的应用程序了。你可以使用h[elp] 或者 ? 命令来列出目前可用的命令。

在接下来的一周,我计划继续这个系列并讨论被mdbgnetcf扩展添加的其他命令,并且演示一些例子来告诉你们应该如何去做。

Enjoy!
-- DK

相关文章:

  • linux 解压oracle提示write error_Linux驱动程序学习二 (续) scull 源码在内核5.4.0上的编译调试...
  • SharePoint Services和SharePoint Portal Server的主要功能
  • mysql中的date_MySql Date函数
  • mysql innodb 文件备份_MySQL物理备份
  • SharePoint Portal Server与SharePoint Services的关系
  • mysql 查找中位数_MYSQL 取中位数
  • python中声明变量注意事项_我们如何在Python中声明变量?
  • 配置SharePoint门户网站的基本思路
  • mysql批量更新查询某个字段_Mysql批量更新某个字段
  • mysql数据库的远程访问_Mysql 数据库 远程连接
  • 分形艺术
  • 绘制恒线速度的参数曲线
  • hibernate mysql sequence_hibernate 在mysql数据库上,利用sequence生成主键的另一种解决方法...
  • 抱SQL SERVER大腿之从巨大表中提炼非重复数据
  • 抱SQL SERVER大腿之我爱用视图
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android交互
  • bearychat的java client
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • iOS | NSProxy
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java反射-动态类加载和重新加载
  • laravel with 查询列表限制条数
  • mockjs让前端开发独立于后端
  • ng6--错误信息小结(持续更新)
  • SAP云平台里Global Account和Sub Account的关系
  • Service Worker
  • Spring框架之我见(三)——IOC、AOP
  • 阿里云Kubernetes容器服务上体验Knative
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 构建工具 - 收藏集 - 掘金
  • 聊聊directory traversal attack
  • 排序算法学习笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 无服务器化是企业 IT 架构的未来吗?
  • 一个SAP顾问在美国的这些年
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #每日一题合集#牛客JZ23-JZ33
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (篇九)MySQL常用内置函数
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @在php中起什么作用?
  • [1] 平面(Plane)图形的生成算法
  • [AIGC] MySQL存储引擎详解
  • [ANT] 项目中应用ANT