您的位置:首页 > 运维架构 > Linux

使用GDB调试程序

2015-09-02 20:25 447 查看
GDB(GNU Debuger)是Linux中的一个功能强大的调试器。GDB可以让你查看程序的内部结构,打印变量值,设置断点,单步调试源码,运行时修改变量值,路径跟踪,线程切换,显示汇编代码等。

编译

  要使用GDB进行调试,在编译程序时需要加入-g选项。当设置了这个选项后,GCC会向程序中加入调试信息“楔子”,GDB能用利用这些楔子与程序交互。

    gcc -g myfile.c -o myfile_debug

调试

加载程序
    可以使用gdb program的方式,或者在GDB启动后用file program的方法启动。
设置输入参数及显示

    
set args命令设置发送给程序的参数;show args命令显示其默认的参数。
打印代码内容

    
list line1,line2 打印代码,不输入参数则从当前行打印。打印数据用print
断点

   
设置断点:1. break 行号;2. break 函数名称;3. break 行号或者函数if条件:这是一个条件断点设置命令,如果条件为真,则程序在到达指定行或函数时停止。如b 38 if i==2

    显示断点信息:info break

    删除指定的某个断点:delete breakpoint 断点编号。 如果不带编号参数,将删除所有断点

    禁止断点:disable breakpoint 断点编号

    允许断点:enable breakpoint 断点编号

    清除断点:clear 源代码行号。 一次性清除直接clear
运行程序

    
使用run命令运行准备好的程序,在它后面是传递给程序的参数。如果使用不带参数的run命令,GDB就再次使用前一条run命令的参数。
检测变量类型

   
 打印数组或变量的类型:whatis 变量名

    查看结构的详细定义用ptype 变量名
单步调试

  
单步调试用next或step命令,step可进入函数体内部。如果已经进入函数内部,想退出函数的运行返回到调用函数中,可使用命令finish。
设置检测点

 
  命令display可以显示某个变量的值,在结束或者遇到断点的时候,将设置变量的值显示出来(作用域内)。
调用路径(栈信息)
   backtrace 命令可打印函数的调用路径,提供向前跟踪功能。简写bt
多线程thread

 
  info thread列出当前进程中的线程号,用thread id进入需要调试的线程
汇编disassemble

 
  disassemble 函数名,打印指定函数的汇编代码
 



                  常用命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  调试 gdb linux