GNU调试器(英语:GNU Debugger,缩写:GDB),是GNU软件系统中的标准调试器,此外GDB也是个具有移携性的调试器,经过移携需求的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB,而现有GDB所能支持调试的编程语言有C、C++、Pascal以及FORTRAN。
1. 编写一个C语言代码 a.c
int main()
{
int i = 5;
int b = 4;
int ret = i * b;
return ret ;
}
2. 以调试模式编译C语言源代码,输出 a.out
gcc -g a.c
3. 编译完成后,启动GDB调试工具,调试 a.out
gdb a.out
4. 如图,GDB调试基本命令 l b r n p i f q
- 用l查看源码,b设置断点为main函数,也可以按行号设置断点行b x ;
- r运行程序,n逐行运行程序,p显示变量值;
- i命令是info的缩写,
info locals
可以同时显示函数中多个变量的值。 - f命令是frame的缩写,显示当前源码和函数信息,q命令是quit的缩写。
5. GDB中输入命令时可以使用 TAB
自动补全,帮你列出相关命令
- 如图, 输入 i 按 TAB键,就显示 i 开头的命令
- 输入 info 后按空格,再按 TAB键,就显示当前命令的 参数命令可供选择
6. GDB在学习ARM汇编也很好用,可以显示源码,汇编码,寄存器值
layout asm
可以用来分窗口显示汇编码disassemble
命令显示汇编码;info registers
显示寄存器值
(gdb) layout
List of layout subcommands:
layout asm -- Apply the "asm" layout.
layout next -- Apply the next TUI layout.
layout prev -- Apply the previous TUI layout.
layout regs -- Apply the TUI register layout.
layout split -- Apply the "split" layout.
layout src -- Apply the "src" layout.
(gdb) disassemble
Dump of assembler code for function main:
0x2a0004e0 <+0>: push {r7}
0x2a0004e2 <+2>: sub sp, #20
0x2a0004e4 <+4>: add r7, sp, #0
0x2a0004e6 <+6>: movs r3, #5
0x2a0004e8 <+8>: str r3, [r7, #12]
0x2a0004ea <+10>: movs r3, #4
0x2a0004ec <+12>: str r3, [r7, #8]
=> 0x2a0004ee <+14>: ldr r3, [r7, #12]
0x2a0004f0 <+16>: ldr r2, [r7, #8]
0x2a0004f2 <+18>: mul.w r3, r2, r3
0x2a0004f6 <+22>: str r3, [r7, #4]
0x2a0004f8 <+24>: ldr r3, [r7, #4]
0x2a0004fa <+26>: mov r0, r3
0x2a0004fc <+28>: adds r7, #20
0x2a0004fe <+30>: mov sp, r7
0x2a000500 <+32>: ldr.w r7, [sp], #4
0x2a000504 <+36>: bx lr
End of assembler dump.
(gdb) info registers
r0 0x1 1
r1 0xbefff784 3204446084
r2 0xbefff78c 3204446092
r3 0x4 4
r4 0xbefff638 3204445752
r5 0x0 0
r6 0x2a0003d1 704644049
r7 0xbefff610 3204445712
r8 0x0 0
r9 0x0 0
r10 0x2a011000 704712704
r11 0x0 0
r12 0xbefff6a0 3204445856
sp 0xbefff610 0xbefff610
lr 0xb6ef0a21 -1225848287
pc 0x2a0004ee 0x2a0004ee <main+14>
cpsr 0xe0030 917552
fpscr 0x0 0
相关推荐: Vultr加速教程:CentOS6/7专用破解版锐速一键安装脚本
因为当前Vultr的所有机房都位于国外,当晚上上网高峰期来临时,在连接速度上会比较慢,所以我们有必要安装一些程序来加速连接速度。本次推荐安装的是本站一直在用的锐速加速软件,本站认为目前在提速方面,相比于最新的Google BBR拥塞控制算法,锐速尚有优势。目前…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册