[时间:2017-05] [状态:Open]
[关键词:gdb,调试,debug,用户手册]

使用gdb是需要在编译是指定-g命令,在可执行文件中添加符号信息。

1. 启动和退出

可以使用gdb gdb executable-file等启动gdb调试。
退出时,命令行输入quitq或者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用法简要整理的更多相关文章

  1. Linux——【转】gcc编译与gdb调试简要步骤

    原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...

  2. Connect2015 简要整理

    2015 简要整理 去年 Connect(); 2014 Visual Studio Contact(); 直播笔记 对于我个人来说,今年 Connect(); 的三个重要发布: ASP.NET 5 ...

  3. FFT & FNT 简要整理

    几周前搞了搞--有点时间简要整理一下,诸多不足之处还请指出. 有哪些需要理解的地方? 点值表示:对于多项式 \(A(x)\),把 \(n\) 个不同的 \(x\) 代入,会得出 \(n\) 个不同的 ...

  4. xPath 用法总结整理

    xPath 用法总结整理   一.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML ...

  5. pt-align的用法简要记录

    pt-align的用法简要记录 1.pt-align 功能:将其它工具的输出按列对齐用法:pt-align [FILES]如果没有指定文件,则默认读取标准输入的内容. 2.例如: [root@dbte ...

  6. 【Linux】GDB用法详解(5小时快速教程)

    GDB是一个强大的命令行调试工具.虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本. UNIX下的软 ...

  7. Connect(); // 2015 简要整理

    去年 Connect(); 2014 Visual Studio Contact(); 直播笔记 对于我个人来说,今年 Connect(); 的三个重要发布: ASP.NET 5 RC1 Entity ...

  8. gcc编译与gdb调试简要步骤

    http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...

  9. gdb用法

    mickole@test:~/ctest/05gdb$ gdb simple //开始gdb调试 GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4- ...

随机推荐

  1. input禁止输入空格

    <input name="" onkeyup="this.value=this.value.replace(/^\s+|\s+$/g,'')" value ...

  2. hdu1573 X问题【中国剩余定理】

    <题目链接> X问题 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod ...

  3. Redis工具类

    /** * Copyright © 2012-2016 * <a href="https://github.com/thinkgem/smkj">smkj</a& ...

  4. Spring框架学习04——复杂类型的属性注入

    代码示例如下: 创建BeanClass实体类 public class BeanClass { private String[] arrs;//数组类型 private List<String& ...

  5. asp.net core for vs code

    1,命令 2,模板 3,更换启动浏览器 4,vscode使用nuget 5,使用ef migration 6,配置.net core的工作目录 7,使用dotnet ef migrations命令 8 ...

  6. 网页图表Highcharts实践教程之图表代码构成

    网页图表Highcharts实践教程之图表代码构成 Highcharts第一个实例 下面我们来实现本书的第一个Highcharts实例. [实例1-1]下面来制作北京连续一周最高温度折线图.操作过程如 ...

  7. Python学习 ——正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生 ...

  8. ab测试swoole和ngixn+php-fpm对比

    做个swoole http_server和ngixn+php7-fpm测试 nginx swoole卓越的性能让我惊呆了   如需应用可nginx反代, swoole作为http_server, 不用 ...

  9. config、option、setting辨析

    作为一个编程新手,在软件目录中常常会看到这几个词,尤其 config . setting 翻译成中文区别不是很大,总让人有点区分不了他们的使用场景.在知乎上看到了关于这个问题的讨论觉得受益挺大的,自己 ...

  10. 搞IT,算法编程不错的学习网址 & 一些专栏博客大神的地址(汇总)

    博客专栏大神 王晓华(算法的乐趣) 算法系列:http://blog.csdn.net/orbit/article/category/830251 PostgreSQL深入理解内核系列:http:// ...