前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GDB调试学习

GDB调试学习

作者头像
云深无际
发布2020-10-23 10:05:59
1.3K0
发布2020-10-23 10:05:59
举报
文章被收录于专栏:云深之无迹云深之无迹
  • 简介 GDB是GCC的调试工具。其功能如下:
    • 启动程序,使程序按自定义形式运行;
    • 使程序停止指定断点位置;
    • 程序停止后,检查程序执行中的相应情况;
    • 动态改变程序执行环境。
  • gdb调试 能进行GDB调试,一般在编译过程中,需使用-g参数。如果不使用-g参数,则在gdb调试过程中,将不能得到程序的函数名、变量名等信息,而只能看见运行时内存地址。举例如下: 启动gdb调试的方法有以下三种: 常用的调试有以下几种:
    • b <行号> // 停在程序的指定一行
    • b <函数名称> // 停在程序的某个函数处
    • b *<函数名称> // 停在编译器生成的prolog代码处。主要用于汇编调试
    • b *<代码地址> // 停在代码的某个地址处
    • d <编号> // 删除断点
    • info b // 查看断点
    • r:运行被调试的程序。如果之前没有设过断点,则执行完整个程序;如果设过断点,则程序停在第一个断点处。
    • c:继续执行被调试程序,直到到下一个断点,或程序整体结束。
    • b:设置断点,包括以下几种:
    • s:执行一行源程序的代码,如果此行代码中存在函数调用,则进入该函数。
    • n:执行一行源程序的代码,此代码中的函数调用执行完成。
    • si:类似于s命令,不同的是,si针对的是汇编指令,而s针对的是源代码。
    • ni:类似于n命令,不同的是,ni针对的也是汇编指令,而n针对的是源代码。
    • p/print:打印指定变量(临时变量和全局变量)、字符串、表达式等值。
    • display …:设置程序中断后想显示的数据及其格式。如希望程序中断后显示即将被执行的下一条汇编指令,可使用如下命令:display /i <script type="math/tex" id="MathJax-Element-1">pc,其中</script>pc指当前汇编指令,/i指十六进制显示。
    • undisplay <编号>:取消先前的display设置,编号从1开始递增。
    • i/info:显示各类信息。
    • q:退出gdb调试环境。
    • help [命令名称]:gdb帮助命令,提供对GDB各种命令的解释说明。如果指定了“命令名称”参数,则显示该命令的详细说明;若果没有指定参数,则分类显示所有GDB命令,共用户进一步浏览和查询。
    • cd dir:运行GDB,使用dir作为gdb的工作目录。
    • se File:从File读取符号表并把它作为可执行文件。
    • -write:开通enable往可执行文件和核心文件写的权限。
    • clear:删除一个断点,这个命令需指定代行或者函数名。
    • set:设置变量的值。如set val = 2即为把2保存到val变量中;设置输入参数使用set args a b c(a,b,c分别为对应输入参数)。
    • watch:监视一个变量的值,不管它何时被改变。
    • rwatch:指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个命令调试。
    • Ctrl + c:在当前位置停止执行正在执行的程序,断点在当前行。
    • ptype:显示变量的类型
    • return:强制从当前函数返回。
    • whatis:显示变量的值和类型。
    • xbreak:在当前函数的退出的点上设置一个断点。
    • load:动态加载一个可执行文件到调试器。
    • ignore:忽略某个断点指定的次数。
    • finish:继续执行,直到当前函数返回。
    • disable:禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数。
    • bt:显示程序堆栈信息。
    • l:l相当于list,从第一行开始列出源码。
    • gdb filename // 其中filename为可执行文件名
    • gdb filename core // core是程序core dump产生的文件,产生core文件,需设置栈大小无线使用ulimit -c unlimited
    • gdb filename PID // PID一般是服务程序运行时的进程ID
    • gcc test.c -o test -g
    • g++ test.cpp -o test -g

这个是学校的电脑测试的,实在太饿了.我没有写完就截图一张.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档