Angel实现调试器请求的功能

出处:nylyt 发布于:2008-12-23 10:29:51

  (1)存储器处理器状态

  Angel可以相应设置调试器查看存储器和处理器状态的请求。具体操作过程如下:

  当调试器要求查看存储器内容时,Angel中的一个函数接收调试器想要查询的存储器的地址,然后将地址范围内的数据以字节流的方式复制到数据缓冲区中,数据以ADP数据包的形式返回调试器。

  在Angel得到处理器控制权时,它将各寄存器的数据保存在一个数据块中。当调试器要求查看存储器内容时,保存寄存器值的数据块将被封存在一个ADP数据包中,返回到调试器;当调试器请求修改某寄存器内容时,Angel'改变数据块中的相应数据;当Angel释放对处理器的控制权时,该数据块被写回到各寄存器中。

  (2)应用程序映像文件

  当应用程序映像文件到目标系统时,调试器向目标系统上的Angel发送一系列的存储器写入ADP消息;Angel将这些数据写入到存储器中的相应位置。

  存储器写入消息比其他的ADP消`患都要长。当用户将Angel移植到自己的目标系统中时,必须保证系统中的设备驱动程序可以处理长度超过256字节的消息。

  存储器写入消息实际的长度可以在移植Angel时配置。

  (3)设置断点

  Angel使用3条未定义的指令来实现设置断点。这3条指令的编码如下所示。

  ·对于little-endian格式的ARM程序,使用指令OxETFDDEFE。

  ·对于big-endian格式的ARM程序,使用指令OxETFFDEFE。

  ·对于Thu血b程序,使用指令OxDEFE。

  当调试器在目标代码的某个位置设置一个断点时,Angel首先保存该位置原来的指令,然后将该指令替换成一个未定义的指令。

  当断点被删除,或者调试器需要查看包含断点在内的存储区域时,Angel将未定义指令恢复成原来的指令。

  当调试器运行断点处的指令时,Angel将未定义指令恢复成原来的指令,并执行该指令。

  当Angel在应用程序运行过程中检测到一条未定义的指令时,Angel执行的操作如下所示。

  (1)对于ARM程序,读取(lr-4)处的指令;对于Thumb程序,读取(lr-2)处的指令。

  (2)如果该指令是Angel中预定义的用于产生断点的未定义指令,Angel将执行下面的操作。

  ·停止当前应用程序的执行。

  ·向调试器发送一条消息,包括断点状态。

  ·循环查询调试器回应的命令。

  (3)如果该指令不是Angel中预定义的用于产生断点的未定义指令,Angel将执行下面的操作。

  ·向调试器遇到了未定义的指令。

  ·循环查询调试器回应的命令。

  



  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!