标签:splay point nts missing 局部变量 必须 x86 strong 断点
使用gdb工具,必须在编译时加上 -g选项
gcc -g main.c -o main
$ gdb a.out
基础指令
列出源码
(gdb) l 1
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4
5 void fun()
6 {
7 printf("---------");
8 }
9
10 int main()
# 打断点
(gdb) b 12
Breakpoint 1 at 0x4005d6: file gdbtest.c, line 12.
# run
(gdb) r
Starting program: /home/fight/demo/code/gdb/aa
Breakpoint 1, main () at gdbtest.c:12
12 srand(time(NULL));
Missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64
# 下一步,执行下一行,系统函数只能用n
(gdb) s
# 下一步,进入函数内部
(gdb) n
# until 19
(gdb) until 17
# 打印变量
(gdb) p age
# 继续
(gdb) continue
直接run,可以找出段错误的位置。
#
b 12
# 条件断点
b 12 if i=5
# 查看断点信息
info b
(gdb) bt
#0 fun () at gdbtest.c:7
#1 0x0000000000400610 in main () at gdbtest.c:15
# 从#0栈帧切换到#1栈帧
(gdb) frame 1
#1 0x0000000000400610 in main () at gdbtest.c:15
15 fun();
# 查看栈帧#1 的变量
(gdb) p age
$1 = 100
站帧:随着函数调用而在stack上开辟的一片内存空间。用于存放函数调用时产生的局部变量和临时值。
(gdb) display age
1: age = 100
(gdb) n
age is : 100
15 fun();
1: age = 100
(gdb) undisplay 1 # 跟踪的变量编号
标签:splay point nts missing 局部变量 必须 x86 strong 断点
原文地址:https://www.cnblogs.com/zhuxiang1633/p/12287407.html