armsd 指令详解

----------------------------------------------------------------------------------------

我没能找到一篇类似的博文,就记录下这次过程,也算从0到1吧

-----------------------------------------------------------------------------------------



armsd是用来调试arm程序的命令。可是很多时候,不知道该怎么用。下面就来看看详解吧。


首先来查看一下armsd有多少可选的参数:

armsd:  help


armsd 指令详解


亲爱的,你看到这么多命令了吗?

上一篇博文只用上了go和quit.

那么今天晚上就看看这些命令吧。


1.Registers

如何查看registers的用法呢: 

armsd: help registers

如下图所示Registers的用途为:展示当前模式下ARM寄存器R0~R15的内容并且破译PSR。如果给出了模式,就展示当前模式下的寄存器内容。


armsd 指令详解


处理器一般有7种模式,分别是用户模式(user),特权模式(svc), 快速中断模式(fiq), 外部中断模式(irq),数据访问中止模式(abt),

未定义指令中止模式(und),系统模式(sys).


(1)registers user

用户模式下可以查看堆栈指针R13(SP)和子程序连接时备用pc用的R14(LR).


 (2)registers svc

特权模式下可以查看所有寄存器。{r0-r14}+pc (程序计数器)+cpsr (当前状态寄存器)+spsr(备份程序状态寄存器)


(3)registers fiq

快速中断模式可以查看备份寄存器{r8-r12}+r13+r14+spsr


(4)registers irq

外部中断模式(普通中断模式)查看 R13+R14+SPSR


这里并不能使用系统模式sys会报错。其他的看兴趣试试吧。


armsd 指令详解


2.cwrite

用途:更新一个协处理器寄存器


armsd 指令详解


3. Quit

用途: 从调试模式下退出

armsd 指令详解

 

4. Watch

用途:设置一个监视点,或者没有参数展示的监视列表。<expr>是一个在任意执行过程后变量改变的变量名字或者是一个在任意执行过程

         后表达式确定的内存地址改变的一个内存地址。

 armsd 指令详解

举例说明,就在r1设置监视点(watchpoint,表明你告诉IDE你希望监视一块内存。当被监视的内存的内容发生变化时,watchpoint就被触发了,此时程序暂停运行,等待我们查看)

armsd 指令详解

 

5.In

用途:后退一个堆栈级别重新存储当前内容,称为当前程序或者功能。

 armsd 指令详解


6.Lsym

用法:展示低级标识符(感觉可能翻译成标识符号更确切)。<sym>是一个用来描述标志符号的模式。 举例子来看LSYM将会列出最主要,最常用的的标识符。LSYM本身会列出所有标识符。


armsd 指令详解