zoukankan      html  css  js  c++  java
  • 应用程序调试工具gdb,王明学learn

                      应用程序调试工具gdb学习使用

    一、GDB简介

    GDB 是 GNU 发布的一款功能强大的程序调试工具。GDB 主要完成下面三个方面的功能:

      1、启动被调试程序。
      2、让被调试的程序在指定的位置停住。
      3、当程序被停住时,可以检查程序状态(如变量值)。

    1.1gdb使用流程

    1.编译生成可执行文件:

      gcc –g tst.c -o tst
    2.启动 GDB
      gdb tst(文件名)
    3. 在 main 函数处设置断点
      break main
    4. 运行程序
      run
    5. 利用更加丰富的 gdb 命令对程序进行调试。

     1.2gdb命令

    1.list(l) 查看程序

    2.break(b) 函数名 在某函数入口处添加断点

    3.break(b) 行号 在指定行添加断点

    4.break(b) 文件名:行号 在指定文件的指定行添加断点

    5. info break 查看所有设置的断点

    6. delete 断点编号删除断点

    7.next(n) 单步运行程序(不进入子函数)

    8.step(s) 单步运行程序(进入子函数)

    9.continue(c) 继续运行程序知道下一个断电

    10.print(p) 变量名 查看指定变量值

    11. set var=value 设置变量的值

    12.quit(q) 退出 gdb

    二、使用Coredump解决Segment fault(段错误)

      有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行,而是没有任何信息, 使得我们的调试变得困难起来.

      有一种办法是, 我们用gdb的step, 一步一步寻找.这放在短小的代码中是可行的。但如果程序代码数量比较庞大,我们就得使用另一种办法了。这时Linux系统可以把程序出错时的内存内容存储在一个core文件中, 这种过程叫Core Dump。

    2.1 Core Dump要解决的问题---->段错误 Segment fault

      Linux应用程序在运行过程中,经常会遇到Segment fault(段错误) 这样的错误。产生这样错误的原因通常有:

      1. 数组访问越界

      2. 访问空指针

      3. 栈溢出

      4. 修改只读内存

    2.2  Core Dump-使能

        在Linux系统中,默认是关闭core dump功能的,但是可以通过来ulimit命令打开/关闭core dump功能。

        打开:ulimit  -c  unlimited

        关闭:ulimit  -c  0

    2.3  core文件分析

         发生core dump之后, 可以使用gdb进行查看core文件的内容, 以定位程序出错的位置.

         用法:gdb  程序名  core文件名

         例: gdb ./test core.12551

       在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里, 来定位core dump的文件->行.

    2.4使用GDB+Core+file找出程序中的错误

     

  • 相关阅读:
    20200209 ZooKeeper 3. Zookeeper内部原理
    20200209 ZooKeeper 2. Zookeeper本地模式安装
    20200209 Zookeeper 1. Zookeeper入门
    20200206 尚硅谷Docker【归档】
    20200206 Docker 8. 本地镜像发布到阿里云
    20200206 Docker 7. Docker常用安装
    20200206 Docker 6. DockerFile解析
    20200206 Docker 5. Docker容器数据卷
    20200206 Docker 4. Docker 镜像
    Combining STDP and Reward-Modulated STDP in Deep Convolutional Spiking Neural Networks for Digit Recognition
  • 原文地址:https://www.cnblogs.com/wmx-learn/p/5293388.html
Copyright © 2011-2022 走看看