• 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

  • 相关阅读:
    【mysql中文乱码】-解决方式
    【URL带参跳转乱码】-解决方式
    【IP地址租约到期】-解决方式
    【Vue-入门笔记-5】
    【Vue-入门笔记-4】
    输入框中的空"",0,null的判断
    让页面以黑白页面显示
    select设置text的值选中(兼容ios和Android)基于jquery
    js中关于两个变量的比较
    css3 动画 总结
  • 原文地址:https://www.cnblogs.com/tocy/p/gdb-basic-summary.html
Copyright © 2020-2023  润新知