GDB用法简要整理
[时间:2017-05] [状态:Open]
[关键词:gdb,调试,debug,用户手册]
使用gdb是需要在编译是指定-g
命令,在可执行文件中添加符号信息。
1. 启动和退出
可以使用gdb
gdb executable-file
等启动gdb调试。
退出时,命令行输入quit
、q
或者ctrl + d。
在gdb命令界面中可以输入help
获得帮助信息。
2. 查看调用堆栈
使用backtrace
where
bt
可查看当前线程调用堆栈。
3. 调试中导航命令
run
开始调试程序,可使用命令行参数指定start
执行调试程序到main函数的第一行,使用的是之前输入的命令行参数pause
continue
暂停和继续调试程序step
是step-into模式下的命令,顺序执行下一条指令,是函数的话会跳入该函数内部,并停在第一行。next
是step-over模式下的命令,顺序执行同级别堆栈的下一条指令,即对于函数,会自动跳过,当做一条指令处理。finish
是step-out模式下的命令,跳出当前堆栈,进入上一层。
4. 调试时查看变量或表达式
print variable-name
使用该指令可以显示变量的值。
5. 查看调试信息
info stack
查看调用堆栈
info thread
查看线程堆栈
6. 内存调试器(memory debugger)
之前只是知道有valgrind等辅助检测内存泄露的工具,但不太清楚还有这个名字。
最初的来由是因为c/c++都存在相同的内存管理问题(比如内存泄露、缓冲区溢出、内存管理错误等bug),这就催生了内存调试器的出现。
常用的内存调试器有Valgrind、Purify、insure++、boundschecker。
具体可以参考点评五款用于 Linux 编程的内存调试器。
7. 小结
直接使用gdb命令行总是枯燥无味的。正确的用法是结合实际情况分析并学习相关调试技巧。
可以在linux下使用DDD的UI界面调试,跟vs的调试器有点类似。
本文简要整理了gdb支持的调试命令,作为后续参考。
更详细的资料建议参考gdb manual。
GDB用法简要整理的更多相关文章
- Linux——【转】gcc编译与gdb调试简要步骤
原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...
- Connect2015 简要整理
2015 简要整理 去年 Connect(); 2014 Visual Studio Contact(); 直播笔记 对于我个人来说,今年 Connect(); 的三个重要发布: ASP.NET 5 ...
- FFT & FNT 简要整理
几周前搞了搞--有点时间简要整理一下,诸多不足之处还请指出. 有哪些需要理解的地方? 点值表示:对于多项式 \(A(x)\),把 \(n\) 个不同的 \(x\) 代入,会得出 \(n\) 个不同的 ...
- xPath 用法总结整理
xPath 用法总结整理 一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML ...
- pt-align的用法简要记录
pt-align的用法简要记录 1.pt-align 功能:将其它工具的输出按列对齐用法:pt-align [FILES]如果没有指定文件,则默认读取标准输入的内容. 2.例如: [root@dbte ...
- 【Linux】GDB用法详解(5小时快速教程)
GDB是一个强大的命令行调试工具.虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本. UNIX下的软 ...
- Connect(); // 2015 简要整理
去年 Connect(); 2014 Visual Studio Contact(); 直播笔记 对于我个人来说,今年 Connect(); 的三个重要发布: ASP.NET 5 RC1 Entity ...
- gcc编译与gdb调试简要步骤
http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...
- gdb用法
mickole@test:~/ctest/05gdb$ gdb simple //开始gdb调试 GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4- ...
随机推荐
- Python 扩展技术总结(转)
一般来说,所有能被整合或导入到其他Python脚本中的代码,都可以称为扩展.你可以用纯Python来写扩展,也可以用C/C++之类的编译型语言来写扩展,甚至可以用java,C都可以来写 python扩 ...
- POJ 2752 (kmp求所有公共前后缀长度)
<题目链接> <转载于> 题目大意: 给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀.从小到大依次输出这些子串的长度.即输出该 ...
- hdu 1166 敌兵布阵【线段树】(求给定区间和)
题目链接:https://vjudge.net/contest/182746#problem/B 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- Apache目录结构解释
源地址:http://blog.51cto.com/marsman/1913676 本文主要讲述apache主要目录结构及主要配置文件 1.apache目录结构 [root@test apache]# ...
- HDU.5909.Tree Cutting(树形DP FWT/点分治)
题目链接 \(Description\) 给定一棵树,每个点有权值,在\([0,m-1]\)之间.求异或和为\(0,1,...,m-1\)的非空连通块各有多少个. \(n\leq 1000,m\leq ...
- config、option、setting辨析
作为一个编程新手,在软件目录中常常会看到这几个词,尤其 config . setting 翻译成中文区别不是很大,总让人有点区分不了他们的使用场景.在知乎上看到了关于这个问题的讨论觉得受益挺大的,自己 ...
- USBWriter之后恢复磁盘大小
USBWriter之后恢复磁盘大小的方法: 1,cmd 2,diskpart 3,list disk 4,select disk *(*你的U盘代号) (e.g:U盘为磁盘 2 ,则代号为2 ,使用命 ...
- @property使用
# coding:utf-8 """ property:负责把方法变成属性 """ class Student(object): def g ...
- JDBC(3)—ResultSet结果集
简介:ResultSet:结果集.封装了使用JDBC进行查询的结果.Statement只能进行更新操作,所以使用ResultSet进行查询操作. 1.调用Statement对象的executeQuer ...
- 前端框架React Js入门教程【精】
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...