当前位置: 首页 > 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大腿之我爱用视图
  • #Java异常处理
  • DOM的那些事
  • Git 使用集
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript的使用你知道几种?(上)
  • Java基本数据类型之Number
  • Linux gpio口使用方法
  • Magento 1.x 中文订单打印乱码
  • Map集合、散列表、红黑树介绍
  • Vue 2.3、2.4 知识点小结
  • WePY 在小程序性能调优上做出的探究
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于Java中分层中遇到的一些问题
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 计算机在识别图像时“看到”了什么?
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端设计模式
  • 前端相关框架总和
  • 前嗅ForeSpider教程:创建模板
  • 算法之不定期更新(一)(2018-04-12)
  • 微信开源mars源码分析1—上层samples分析
  • FaaS 的简单实践
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • # 安徽锐锋科技IDMS系统简介
  • #define 用法
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (09)Hive——CTE 公共表达式
  • (1)常见O(n^2)排序算法解析
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (正则)提取页面里的img标签
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .equals()到底是什么意思?
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Mobi域名介绍