1、设置断点,在源程序第16 行处

(gdb)break 16
Breakpoint 1 at 0x8048496: file tst.c, line 16.

2、设置断点,在函数func()入口处。

(gdb)break func
Breakpoint 2 at 0x8048456: file tst.c, line 5.

3、查看断点信息。

(gdb)info break
Num Type Disp Enb Address What
1 breakpoint keep y 0x08048496、 in main at tst.c:16
2 breakpoint keep y 0x08048456 in func at tst.c:5

4、

(gdb)run ——————运行程序 r
(gdb)next ——————单条语句执行。 n
(gdb)continue ——————继续运行程序 c

5、查看所有参数

(gdb)in all
info local 查看当前变量

6、打印变量i 的值(gdb)print i p i

$1 = 134513808
(gdb) p g_uiTblmIdSwitchControl
$1 = -1
(gdb) p g_uiTblmLogSwitchControl = 1
$2 = 1
(gdb) p g_uiTblmIdSwitchControl = 74 x
$3 = 74
(gdb) q

7、查看函数堆栈

(gdb)bt
#0 func (n=250) at tst.c:5
#1 0x080484e4 in main () at tst.c:24
#2 0x400409ed in __libc_start_main () from /lib/libc.so.6

8、退出函数

(gdb)finish
Run till exit from #0 func (n=250) at tst.c:5
0x080484e4 in main () at tst.c:24
24 printf("result[1-250] = %d \n", func(250) );
Value returned is $6 = 31375

9、 退出gdb
(gdb)quit

10、查看内存内容

x /160xb 0x43964d80

该命令的具体语法格式为 x<n/f/u><addr> n、f、u是可选参数。

n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

<addr>表示一个内存地址。
n/f/u三个参数可以一起使用。例如:命令:x/3uh 0x54320 表示,从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示三个单位,u表示按十六进制显示。

输出格式
一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:

x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
(gdb) p i
$21 = 101 (gdb) p/a i
$22 = 0x65 (gdb) p/c i
$23 = 101 'e' (gdb) p/f i
$24 = 1.41531145e-43 (gdb) p/x i
$25 = 0x65 (gdb) p/t i
$26 = 110010

11、查看数据结构

p *(struct link_map *)0x7fab515fe000

12、gdb -p 子进程

13、watch *(int*)监控4字节地址 用户态修改

14、如果core文件出现两个线程,如

[New LWP 221856]
[New LWP 217511] t 2
bt
就可以看到第二个线程对应的调用栈,thread apply all where 查看所有线程

15、强制调用函数

使用call或print命令 直接调用函数执行

16、生成内核转存文件

gcore 命令生成core文件 

17、函数短接

gdb下输入:
b LSPIC_LinkAlmPer_InsLinkAlm
commands
return (unsigned int)0
c
end

18、观测点

watch len,可以加观测点,值变化的话会有打印信息,或者告警

19、gdb下需要输入参数

set args prama1 prama2

最新文章

  1. JAVA GUI编程学习笔记目录
  2. MicrosoftWord2013基本用法
  3. InnoDB还是MyISAM 再谈MySQL存储引擎的选择
  4. PMD宣传文案
  5. 2015.05.14:codesmith
  6. html5设计原理(转)
  7. POJ 1847 Tram (最短路)
  8. 在阿里云服务器ubuntu14.04运行netcore
  9. Label设置行间距--b
  10. java 批量插入10万条数据
  11. HDU 5791 Two
  12. EC读书笔记系列之19:条款49、50、51、52
  13. SpringMVC类型转换、数据绑定
  14. 旺财速啃H5框架之Bootstrap(六)
  15. 李航《统计学习方法》CH01
  16. SpringBoot MVC 拦截器
  17. noip第10课资料
  18. 解决IE弹框提示“是否停止运行此脚本”问题
  19. nio入门教程
  20. 我对于C#的想法

热门文章

  1. 基于GDAL库,读取.grd文件(以海洋地形数据为例)Java版
  2. Linux源码编译安装php7.2
  3. 02 HTML标签
  4. v79.01 鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上) | 百篇博客分析OpenHarmony源码
  5. suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件
  6. MySQL数据库备份的4种方式
  7. Spark学习记录
  8. MLD协议测试——网络测试仪实操
  9. 说出来你可能不信,我用excel就能做一张高端的统计报表
  10. 【C#基础概念】字节顺序(大端、小端)