gdb使用
资料位置resources/gdb_slides.pdf
Tips
- 帮助,
help <command-name>
- 缩写:
c = co = cont = continue
,s = step
,si = stepi
- 回车键将会重复上次命令
常用命令
- step 单步执行代码,遇到函数将会进入.
- next 单步执行代码,遇到函数不会进入.
- stepi 单步执行指令,遇到函数将会进入.
- nexti 单步执行指令,遇到函数不会进入.
- continue 执行代码直到遇到断点,或者按下Ctrl-c.
- finish 执行代码,直到当前函数执行完毕.
- advance location 运行代码到指定位置
- break location 在指定位置设下断点
- 位置可以是以下形式: "*0x7c00", "mon_backtrace", "monitor.c:71"
- 可以通过以下命令修改断点: delete, disable, enable
- watch expression 观测点.当表达式的值变化时,停止运行.
- watch -l address 观测点,当地址中的值变化时,停止运行.
- x/x address 以16进制形式,打印内存值
- x/i address 以指令形式,打印内存值
- print 执行C表达式,并按合适的格式打印
p *((struct elfhdr *) 0x10000)
显然要比x/13x 0x10000
直观的多- info registers 显示所有寄存器的值
- info frame 打印当前函数栈
- list location 显示执行位置的源码
- backtrace 回溯函数栈,在完成lab 1时,这个命令很有帮助.
- set variable 执行期间改变变量的值
- symbol-file obj/usr/name 或者 symbol-file obj/kern/kernel 运行时更换符号文件