gdb

GDB常用命令:

       r                                : run  ,运行被调试程序, 如果此前没有下过断点,则执行完整个程序;如果有断点, 则程序暂停在第一个可用断点处

       c                                : continue , 继续执行被调试程序, 直至下一个断点或程序结束

       b                                : break  , 设置断点

       d                                : delete {id_no}, 删除指定编号的某个断点, 不带参数则为删除所有断点

       s                                 : step , 执行一行源程序代码, 如果此行代码中有函数调用, 则进入该函数

       n                                : next , 执行一行源程序代码, 此行代码中的函数调用也一并执行

       p                                : print  , 显示指定变量的值

  bt                               : backtrace ,打印程序的调栈

       display                       : 设置程序中断后欲显示的数据及其格式

       undisplay {id_no} : 取消先前的display设置(断点编号从1开始递增)

       i                                  : info , 用于显示各类信息

       q                                 : quit , 退出GDB调试环境

       help                            : GDB帮助命令

gdb调试线程:

info threads 显示当前进程的所有线程

thread {id_no} 切换进到指定线程,id_no 可以通过 info threads 查看

info source 显示当前调试的源文件

gdb带参数调试:

  • shell环境下执行gdb --args ./program arg1 arg2 arg3
  • shell环境下执行gdb ./program, 进入gdb后,r arg1 arg2 arg3
  • shell环境下执行gdb ./program, 进入gdb后,set args arg1 arg2 arg3

gdb断点设置

b file.c:36                    # 执行到file.c的第36行时触发断点

b function                   # 执行到function时触发断点

b file.c:36 if cnt==0    # 如果执行到file.c的第36行且满足cnt==0, 触发断点

gdb 打印设置:

set print null-stop                  # 如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为 off。

set print pretty on                 # 格式化结构体显示。

set print array on                  # 打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。这个选项默认是 off。

set print array-indexes on    # 打印数组元素的下标, 默认是 off 。

set print union on                # 打印 C 中的联合体, 默认是 on 。

set print address                  # 打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为 on。

原文地址:https://www.cnblogs.com/tongyishu/p/11691199.html