PHP源码分析基本技能GDB的操作

gdb工具的掌握也是了解源码编译的必备工具之一,我们没有办法一次性编译没有任何问题的源码,gdb就是调试源码的工具

1、什么是gdb

gdb是GNU debugger的缩写,是程序的调试工具

2、gdb的功能

  • 启动程序,可以按用户的需求运行程序
  • 设置断点
  • 打印程序
  • 动态打印程序变量

#include <stdio.h>
#include <stdlib.h>

long func(int);

int main(int argc, char *argv[])
{
	printf("Entering main ...\n");
	int i;
	long result = 0;
	for ( i = 1; i <= 100; ++i)
	{
		result += i;
	}
	printf("reslt[1-100] -= %ld\n", result);
	printf("reslt[1-10] = %ld\n", func(10));
	printf("Exiting main ... \n");
	return 0;
}

long func(int n)
{
	long sum = 0;
	int i;
	for ( i = 1; i <= n; ++i)
	{
		sum +=i;
	}
	return sum;
}
简单的使用下gdb

[root@ gdb]# gdb test //输入进入gdb调试环境
Reading symbols from /root/gdb/test...done.
(gdb)list //简写l 查看源码并显示行数
(gdb)break 10 //在第10行处设置断点
(gdb)break 24
(gdb)list 10 //查看10行处的代码
(gdb)info break // 简写i b;查看所有断点 
(gdb)run // 运行程序,
Starting program: /root/gdb/test
Entering main ...
Breakpoint 1, main (argc=1, argv=0x7fffffffe618) at test.c:10
10        long result = 0;
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6_4.5.x86_64
(gdb) // 因为在10行设置了断点,所以在此次停止
(gdb) step //使用step运行下一步 简写s,这是单步调试
(gdb) print i // 打印i的值,简写p i
$i = 2
(gdb) print result
(gdb) until //跳出循环
(gdb) continue // 运行到24行的断点处, 简写c
(gdb) s
(gdb) 回车 // 这里的回车是指上一个命令
(gdb) filish // 退出方法
通过上面简单的运用,就知道gdb其实很好用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值