GDB使用总结

文章目录

  • gdb 版本信息
  • 建议
  • 环境变量问题
  • gdb 命令的参数
    • --configuration
    • --args
    • kill
    • set
    • 设置要调试的文件
    • 设置源码路径
    • set 还可以设置当前程序变量值
    • 如果第一个参数前没有选项
    • -se
  • gdb thread 类
  • 大小端问题
  • 调试
    • .gdbinit
    • 加载 .gdbinit 失败
    • 设值汇编格式
    • 调试daemon程序
    • 设置参数
    • dir
  • 技巧
    • catch
      • catch syscall
    • ptype
      • union
      • struct
    • 如何查看宏定义的值,
    • info
      • files
      • line
      • symbol
    • list
    • print sizeof
    • nexti
    • 查看内存 x dump
      • 示例
    • 查找内存find
    • 加载so文件
    • 错误 requires 828008 bytes, which is more than max-value-size
    • 生成 core 文件
      • warning
    • handle 《signal 》
    • list memory map
    • watchpoint内存改动监视
      • 显示例子
      • watch 内存地址
    • logging
    • set
      • set debug target
    • 错误 docker
    • 问题总结
      • 如何显示所有的字符串?
      • 问题1:
      • 问题2:实际运行程序的环境和debug的环境要一致?
      • 问题3:
      • 问题4:如何打印环境变量
      • 问题5:查看共享库内存映射地址
      • 问题6: 查看某个c++ 对象所属类的虚函数
      • 问题7, 如何手动产生core file
      • 问题8 对应类的成员函数怎么设置 断点:
      • 问题9 怎么设置运行程序的参数
      • 问题10 怎样打印类型的大小;
      • 问题11,打印signal的值:
      • 问题12, 内存有可能是小端方式存放
      • 查看寄存器的值info register, rip寄存器
      • 如何使用gcc 的-g 调试选项
      • 加断点 break 命令:
      • 如果程序无故退出,可能的原因是coredump,可以使用gdb 调试看看。
      • 在GDB,可以直接调用static 函数
    • 命令
      • 反汇编
      • print
    • 调试多线程
    • 动态库也可以调试
  • 保存会话输出
  • 设置输出格式

gdb 版本信息

https://sourceware.org/gdb/news/

建议

在使用gdb时,最好加上-q参数,这个参数可以不让gdb打印版权之类的信息,这些信息在真正使用时,我们不太关系,而且,可能导致使用者忽略很关键的错误/警告提示。

环境变量问题

当前shell下设置的环境变量,可以带到gdb里。

gdb 命令的参数

–configuration

Print details about GDB configuration and then exit.

$ gdb --configuration
This GDB was configured as follows:
   configure --host=x86_64-redhat

你可能感兴趣的:(gcc,gdb/coredump,linux,gdb)