手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

GDB 调试工具使用方法详解

[日期:2018-01-29] 来源:Linux社区  作者:Linux [字体: ]

GDB 调试工具使用方法详解

1. 什么是gdb

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

2. gdb的功能

  • 启动程序,可以按照用户自定义的要求随心所欲的运行程序。
  • 可让被调试的程序在用户所指定的调试断点处停住(断点可以是条件表达式)。
  • 当程序停住时,可以检查此时程序中所发生的事。比如,可以打印变量的值。
  • 动态改变变量程序的执行环境。

3. gdb的使用

  1. 运行程序
    • run(r)运行程序,如果要加参数,则是run arg1 arg2 ...
  2. 查看源代码
    • list(l):查看最近十行源码
    • list fun:查看fun函数源代码
    • list file:fun:查看flie文件中的fun函数源代码
  3. 设置断点与观察断点
    • break 行号/fun设置断点。
    • break file:行号/fun设置断点。
    • break if<condition>:条件成立时程序停住。
    • info break(缩写:i b):查看断点。
    • watch expr:一旦expr值发生改变,程序停住。
    • delete n:删除断点。
  4. 单步调试
    • continue(c):运行至下一个断点。
    • step(s):单步跟踪,进入函数,类似于VC中的step in
    • next(n):单步跟踪,不进入函数,类似于VC中的step out
    • finish:运行程序,知道当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。
    • until:当厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序知道退出循环体。
  5. 查看运行时数据
    • print(p):查看运行时的变量以及表达式。
    • ptype:查看类型。
    • print array:打印数组所有元素。
    • print *array@len:查看动态内存。len是查看数组array的元素个数。
    • print x=5:改变运行时数据。

4. 程序错误

  • 编译错:编写程序的时候没有符合语言规范导致编译错误。比如:语法错误。
  • 运行时错误:编译器检查不出这种错误,但在运行时候可能会导致程序崩溃。比如:内存地址非法访问。
  • 逻辑错误:编译和运行都很顺利,但是程序没有干我们期望干的事情。

5. gdb调试段错误

什么是段错误?段错误是由于访问非法地址而产生的错误。

  • 访问系统数据区,尤其是往系统保护的内存地址写数据。比如:访问地址为0的地址。
  • 内存越界(数组越界,变量类型不一致等)访问到不属于当前程序的内存区域。

gdb调试段错误,可以直接运行程序,当程序运行崩溃后,gdb会打印运行的信息,比如:收到了SIGSEGV信号,然后可以使用bt命令,打印栈回溯信息,然后根据程序发生错误的代码,修改程序。

6. core文件调试

6.1 core文件

在程序崩溃时,一般会生成一个文件叫core文件。core文件记录的是程序崩溃时的内存映像,并加入调试信息,core文件生成过程叫做core dump(核心已转储)。系统默认不会生成该文件。

6.2 设置生成core文件

  • ulimit -c:查看core-dump状态。
  • ulimit -c xxxx:设置core文件的大小。
  • ulimit -c unlimited:core文件无限制大小。

6.3 gdb调试core文件

当设置完ulimit -c xxxx后,再次运行程序发生段错误,此时就会生成一个core文件,使用gdb core调试core文件,使用bt命令打印栈回溯信息。

强大的C/C++ 程序调试工具GDB  http://www.linuxidc.com/Linux/2016-09/135171.htm

Linux GDB调试 详述 http://www.linuxidc.com/Linux/2016-11/137505.htm

GDB调试命令  http://www.linuxidc.com/Linux/2017-01/139028.htm

使用GDB命令行调试器调试C/C++程序 http://www.linuxidc.com/Linux/2014-11/109845.htm

GDB调试命令总结  http://www.linuxidc.com/Linux/2016-08/133988.htm

GDB调试工具入门  http://www.linuxidc.com/Linux/2016-09/135168.htm

GDB 的详细介绍请点这里
GDB 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2018-01/150638.htm

linux
相关资讯       GDB 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款