本文主要是介绍AndroidLinux gdb用法(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
gdb之display显示格式
gdb # display/x count //以十六进制的形式打印出整数。
gdb # display/u count //以无符号、十进制的形式打印出整数。
/fmt | 功 能 |
---|---|
/x | 以十六进制的形式打印出整数。 |
/d | 以有符号、十进制的形式打印出整数。 |
/u | 以无符号、十进制的形式打印出整数。 |
/o | 以八进制的形式打印出整数。 |
/t | 以二进制的形式打印出整数。 |
/f | 以浮点数的形式打印变量或表达式的值。 |
/c | 以字符形式打印变量或表达式的值。 |
注意:如果是linux程序需要加-g,Android程序需不要strip.1.gdb启动本地程序test
bash# gdb ./test
gdb# b test.c:34
gdb# wh //显示源码
gdb#
gdb# commands
> p len
> display *data
> c //继续执行,continu
> end
gdb# r
//如果crash
# bt //打印堆栈
# info proc mappings //查看当前进程加载so起始地址
Or
# cat /proc/pid/maps2.gdb attach pid
bash# ps | grep crackme
bash# gdb -p pid
gdb# commands
> p len
> p *data
> c //继续执行,continu
> end
gdb# c
//如果crash
gdb# bt //打印堆栈
gdb# info proc maps //查看当前进程信息及加载so
Or
gdb# cat /proc/pid/maps
GDB常用的调试命令
(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h
(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
(gdb)start:单步执行,运行程序,停在第一执行语句
(gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
(gdb)set:设置变量的值
(gdb)next:单步调试(逐过程,函数直接执行),简写n
(gdb)step:单步调试(逐语句:跳入自定义函数内部执行),简写s
(gdb)backtrace:查看函数的调用的栈帧和层级关系,简写bt
(gdb)frame:切换函数的栈帧,简写f
(gdb)info:查看函数内部局部变量的数值,简写i
(gdb)finish:结束当前函数,返回到函数调用点
(gdb)continue:继续运行,简写c
(gdb)print:打印值及地址,简写p
(gdb)quit:退出gdb,简写q
(gdb)break+num:在第num行设置断点,简写b
(gdb)info breakpoints:查看当前设置的所有断点
(gdb)delete breakpoints num:删除第num个断点,简写d
(gdb)display:追踪查看具体变量值
(gdb)undisplay:取消追踪观察变量
(gdb)watch:被设置观察点的变量发生修改时,打印显示
(gdb)i watch:显示观察点
(gdb)enable breakpoints:启用断点
(gdb)disable breakpoints:禁用断点
(gdb)x:查看内存x/20xw 显示20个单元,16进制,4字节每单元
(gdb)run argv[1] argv[2]:调试时命令行传参
这篇关于AndroidLinux gdb用法(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!