• Linux_gdb调试器


    gdb调试器

    一、相关信息了解

      1、程序的发布有两种模式:" debug " 和 " release "

      2、Linux下gcc / g++ 产生的可执行程序默认是 " release " 模式

      3、使用gdb进行调试时,必须在生成可执行程序的时候加上 -g 选项

        为啥?  以便生成gdb调试所需要的调试符号的信息,如果不加该选项,调试时相关调试操作是不能狗进行使用的

    二、gdb的基本操作

      < l / list >  后接数字,显示前后各5行的代码,接着上次的位置往下列,每次列10行

            后接函数名,显示函数的内部代码

      < r / run >  运行程序

      < n / next >  逐过程,单条执行

      < s / step >  逐语句,进入函数调用

      < b / break >  打断点

        b #  在某行打上断点

        b 函数名  在该函数的头部打上断点

        disable Num 该行断点禁用

        enable Num  该行断点启用

        i b ( info breakpoints )  查看断点信息

        delete breakpoints [  ]  [  ] 内部不加信息断点表示删除全部断点,加数字表示删除某个断点 

      < p / print >  打印表达式的值,通过表达式可以修改变量的值或调用函数

      < i locals >  打印当前作用域的临时变量的值

      < c / continue >  继续执行

      < display >  [ 变量名 ]  跟踪变量的值

      < bt / where >  查看调用堆栈

      < q / quit >  退出gdb

    三、readelf命令调用

        是什么?    用来显示ELF格式目标文件的信息,可通过参数选项来控制显示一些特定信息
          *>ELF格式文件:是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件
          *>ELF文件组成部分:ELF头、程序头表、节和节头表组成
        干什么?
        1>查看共享库的依赖库( NEEDED )和搜索名 ( SONAME )
                readelf -d <file_name> 
        2>显示ELF头信息
                readelf -h <file_name>
        与objdump命令的区别:
            objdump使用了bfd库进行文件读取,而readelf并没有,且另写一段代码,对一些条件判断并不是很严格;
            readelf可以显示调试信息,而objdump并没有,但objdump经过简单处理也可以实现调试信息的显示
  • 相关阅读:
    centos下修改hosts文件以及生效命令
    CentOS 7 上安装(LAMP)服务 Linux,Apache,MySQL,PHP
    sqlserver下载地址及密匙
    npm/gulp/nodejs
    sp_addlinkedserver 跨服务器连接数据库查询
    sql使用临时表循环
    nodejs和npm
    扫描输入后自动定位到下一个输入框
    Unable to load the specified metadata resource
    mysql保存乱码(C#)
  • 原文地址:https://www.cnblogs.com/bj3251101/p/11820962.html
Copyright © 2020-2023  润新知