linux开发之gdb记录

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

简述

GDB, the GNU Project debugger, allows you to see what is going on 'inside' another program while it executes -- or what another program was doing at the moment it crashed.
GDB, GNU项目调试器,允许你看到在另一个程序执行时“内部”发生了什么——或者另一个程序在崩溃时正在做什么。

使用

准备工作

要想使用gdb进行源码级别的调试,需要用gcc编译(不是链接)时候加上-g选项。这样调试生成的程序才能够显示源码,否则只能进行汇编级别的调试。
通常进行编译时候不止加入-g,还会关闭编译器优化-O。另外,-Wall可以在编译时候发现一些问题,避免一些不必要的bug。
开始

首先通过gdb 程序名来启动gdb去调试该程序。
命令说明示例基本q/quit退出help帮助,可具体指定哪个命令help infoset args 参数...给程序设置参数set args 1 2show args显示当前start程序运行并停在第一行r/run程序运行并到断点才停止c/continue继续运行直到下一个断点n/next执行一条一句(不会进入函数体)s/step执行一条一句(进入函数体)until继续运行至退出循环或遇到下一个断点finish继续运行至跳出函数体或遇到下一个断点查看代码相关l/list显示当前文件代码l 行号显示指定行号前后文list 10l 函数名显示指定函数list mainl 文件名:行号显示指定文件代码list ot.cpp:1l 文件名:函数名显示指定文件代码list ot.cpp:funshow list/listsize显示list时候的行数set list/listsize 行数设置list时候显示的行数set list 20断点b/break 行号在当前文件指定行打断点b 10b 函数名在当前文件指定函数打断点b funb 文件名:行号在指定文件指定行打断点b ot.cpp:10b 文件名:函数名在指定文件指定函数打断点b ot.cpp:funb 位置 if 条件设置条件断点(一般用于循环位置)b 23 if i==2i/info b查看断点信息d/del/delete 断点编号删除指定断点d 2dis/disable 断点编号使指定断点无效dis 2ena/enable 断点编号使指定断点生效ena 2变量p/print 变量名打印变量值p varptype 变量名打印变量类型ptype varset var 变量名=值设置变量值set var i=6display 变量名每次暂停自动打印变量的值display vari/info display查看自动打印变量列表undisplay 编号取消自动打印undisplay 2
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表