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

来源:互联网 发布:自媒体选题 知乎 编辑:程序博客网 时间:2024/06/05 15:46

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/testEntering main ...Breakpoint 1, main (argc=1, argv=0x7fffffffe618) at test.c:1010        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其实很好用的

原创粉丝点击