zoukankan      html  css  js  c++  java
  • Linux之gdb调试工具

    1. 启动gdb

      在使用gdb调试C/C++程序前,必须要使用gcc -g命令生成带有调试信息的可执行程序:

    $ gcc -g -o hello Hello.c

    然后就可以使用gdb来对生成的hello二进制文件进行调试了。

    $ gdb hello

    gdb会首先在屏幕上答应一些其版本信息,然后显示提示符(gdb)等待用户指令。

    2. 获取帮助

      任何时候都能够使用help命令来查看帮助信息:

    (gdb) help

    可以查看具体命令的帮助信息,如breakpoints

    (gdb)help breakpoints

    3. 查看源代码

      使用list命令(缩写l)用于查看程序的源代码,gdb会自动在程序源代码前加上行号,第一次使用list会列出前10行,再一次list会列出下10行,以此类推.

    (gdb) list

     也可以给list指定行号,显示行号周围的10行源程序,

    (gdb) list 15

    gdb还支持search命令搜索特定的内容,会显示出第一次出现待搜索内容的位置,按下回车再继续往下搜索,很明显search命令只能从头往尾搜索:

    (gdb)search main

     gdb提供了反向搜索命令reverse-search,search和reverse-search都支持正则表达式搜索。

    4.设置断点

      使用break命令对指定的行设置断点:

    (gdb) break 10//在第10行设置断点

      可以使用下面的命令查看,已经设置的断点的信息:

    (gdb) info break

    使用clear命令可以清除当前行的断点

    (gdb) clear

    5.运行程序和单步运行

       设置完断点后就可以运行程序了,使用run命令(缩写r)运行至断点

    (gdb) run

      运行到断点后等待用户发出指令,使用next命令进行单步运行

    (gdb) next

    也可以制定一个数字让gdb连续执行n次,然后停止

    (gdb)n  2

    continue命令(缩写c)能够指导gdb运行至下一个断点。

    (gdb)continue

    还有step单步运行命令,其和next区别在于next只是老老实实的执行一步,不会进入函数内部,而step是能够进入函数内部的

    6.监视变量

    print命令(缩写r)能让gdb输出指定变量的值:

    (gdb) print sum

    但print比较麻烦,每次都需要输入print命令才能一直监视某个变量,所以gdb提供了watch命令来将某个变量设置为监视点

    7. 临时修改变量

     gdb提供set var命令来在程序运行时改变变量的值

    (gdb) set var i=1

    8.查看堆栈情况

      bt命令查看当前运行时栈的情况

    9. 退出gdb

      使用quit命令退出gdb调试

  • 相关阅读:
    bash中一次性给多个变量赋值命名管道的使用
    Mysql复制还原后root帐号权限丢失问题
    TC中HTB的使用备注
    Python 调用JS文件中的函数
    PIL图像处理模块,功能强大、简单易用(转)
    openfeign 实现动态Url
    Extjs 进度条的应用【转】
    Javascript 对象与数组中的函数下【转】
    Linq学习笔记之一:Linq To XML
    Sql Server查询语句的一些小技巧
  • 原文地址:https://www.cnblogs.com/chmm/p/7430002.html
Copyright © 2011-2022 走看看