说明:这里列举的是常用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 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]