zoukankan      html  css  js  c++  java
  • GDB用法简要整理

    [时间: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

  • 相关阅读:
    【网络】默认路由(路由黑洞,路由终结)
    textstroke(文本描边)和textfillcolor(文本填充色)Css3演示
    enter键提交表单
    Web App和Native App 谁将是未来
    模拟input type=file
    margintop 无效,避开麻烦的margin叠加(margin collapsing)
    用jquery写的简单tab效果
    CSS3下的渐变文字效果实现
    jQuery阻止冒泡和HTML默认操作
    设置文本输入框默认值
  • 原文地址:https://www.cnblogs.com/tocy/p/gdb-basic-summary.html
Copyright © 2011-2022 走看看