调试利器GDB(上)-创新互联

调试利器GDB(上)

1.1 GDB初识

1.1.1什么是GDB?

GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态

新田网站建设公司创新互联,新田网站设计制作,有大型网站制作公司丰富经验。已为新田近千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的新田做网站的公司定做!

1.1.2为什么需要GDB?

软件产品的研发过程必然伴随bug,调试时软件开发中不可或缺的技术(调试工具很重要)

1.1.3 DBG与binutils

调试利器GDB(上)

1.2 GDB的常规使用

1.自定义程序得到启动方式(指定影响程序运行的参数)
2.设置条件断点(在满足条件时程序暂停执行)
3.回溯检查导致程序异常结束的原因(core dump)
4.动态改变程序的执行流(定位问题的辅助方式)

1.3 GDB的启动方式

直接启动:

gdb
gdb test.out
gdb test.out core

动态链接
gdb test.out pid
1.4 GDB的应用示例
示例1:

dbg                 //启动
file test.out           //载入目标程序
set args arg1 arg2  //设置命令行参数
run                 //执行目标程序
注:gdb  + file test.out  ==  gdb test.out

示例2:

gdb                 //启动
attach  pid         //链接到目标进程,链接成功后目标程序将停止执行
continue                //恢复执行
注:gdb + attach pid  ==  gdb test.out pid

1.5 断点调试

1.5.1断点类型

  • 软件断点:由非法指令异常实现(软件实现),,通过中断来实现程序位于ram中
  • 硬件断点:由硬件特性实现(数量有限)程序位于flash(只读)中
  • 数据断点:由硬件特性实现(数量有限),监视内存,当内存被改写时触发

    1.5.2软件断点相关操作

    通过函数名设置断点:

    break func_name [ if var = value]
    tbreak func_name [ if var = value]

    通过行号设置断点:

    break file_name:line_num [ if var = value ]
    break file_name:line_num [ if var = value ]

    Tbreak设置的断点只生效一次。
    调试利器GDB(上)

    1.5.3调试时相关操作

    调试利器GDB(上)

    1.5.4硬件断点及其操作

    当代码位于只读寄存器(flash)时,只能通过硬件断点调试
    硬件断点需要硬件支持,数量有限
    GDB通过hbreak命令支持硬件断点,与break使用方法完全一致

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享文章:调试利器GDB(上)-创新互联
文章源于:https://www.cdcxhl.com/article12/dssegc.html

成都网站建设公司_创新互联,为您提供用户体验网站营销静态网站企业建站关键词优化品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作