说明:这里列举的是常用command,就是上面的命令窗口,输入命令就可以进行相应的调试。
3.1 载入文件 add-symbol-file filename [offset] [-s section address] (1)如果-s没有指定,load的地址=entry point+ offset (2)-s指定的是section,比如.text,.data等 add-symbol-file vmlinux -s .text 0x1000 -s .data 0x2000 load的符号表,.text段重定位到0x1000 discard-symbol-file 删除symbols reload-symbol-file 重新加载,如果之前没加载会报错 3.2 断点 break <addr> 软件断点 hbreak <addr> 硬件断点 thbreak <addr> 硬件断点,不过中断后会自动disable clear <addr> 删除一个断点 delete breakpoints 删除多个断点,breakpoints赋值具体的断点号,不然为所有 enable/disable breakpoints 使能/取消断点 3.3执行调试 next step nexti step over continue/stop/interrupt 个人感觉使用按钮会更方便。 3.4 memory和MMU3.4.1 memory
dump 读取内存新建的一个文件中,自动帮我们建文件 例子:dump memory 2.bin 0x40008000 0x40008c00 //读取该范围的内存到2.bin中 append 读取内存追加到原有的一个文件中,该文件必须之 前建好 assemble可以修改内核的汇编代码到内存例子:
这样子,在Disassembly里面就会产生相关的修改 。
memory set 往内存里面写东西 这里要说明一下,上面的0和8是写带宽,如果指定为0则是系统指定,其他还有4,16,32,64。
memory set_typed 往内存写一串数据
由于很多操作,都可以直接对memory窗口直接操作,这里不再列举。
3.4.2.MMU
MMU的很多操作都可以在MMU的窗口里面操作,比较直观,这里不详述。
4.registerinfo all-registers 显示出所有寄存器以及相关的值 info registers 显示指定的寄存器 例如:info registers R1
5. info 查找信息这里列举一下特有的,至于info breakpoints这些查看断点的,因为在窗口上看很直观这里就不一一列举了。
info signals 显示异常类型 info handle 显示处理类型 info cores 显示处理器状态 info files 显示导入的image的段信息 info sources 根据导入的文件得到源码的位置 info process 显示用户进程信息 OS ID (pid), OS Parent ID, kind, OS state, current state, related stack frame including the function names and source line number. info threads 显示线程信息 栈信息显示: backtrace,info stack,where格式:info stack [ n | -n ] [full] // n指定栈底开始第几层 // -n 指定栈顶开始第几层 backtrace [ n | -n ] [full] where [ n | -n ] [full] //显示调用的栈 backtrace设置默认的操作,当执行info stack的时候 set backtrace limit 10 #显示至第十层 set backtrace limit 0 #显示整个栈
show backtrace limit #显示设置 frame 作用:设置当前的指针指向调用的栈然后显示函数名称,源 码行数等。 格式:frame [number] //调到numberi指定的层,然后显示 该层对应的信息 //默认为0 info frame [number] 显示栈的消息 格式:frame [number]免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:ARM DS5调试记录(2)命令介绍说明 https://www.yhzz.com.cn/a/13993.html