36 lines
1.1 KiB
Plaintext
36 lines
1.1 KiB
Plaintext
![]() |
gdb c/c++ 代码调试工具
|
||
|
使用 g++ -g 生成调试文件,不可以加 -O 选项
|
||
|
|
||
|
set [argc] # 传入参数
|
||
|
l n # 列出源码
|
||
|
r # 开始运行到第一个断点
|
||
|
b n # 在第n行打断点
|
||
|
break main if var_name > 10 # 满足条件时打断点
|
||
|
d n # 删除断点
|
||
|
c # 继续运行到下一个断点
|
||
|
s # 单步执行
|
||
|
si # 单步汇编
|
||
|
n # 单步执行,不进入函数
|
||
|
q # 退出
|
||
|
|
||
|
set var [] # 修改变量的值
|
||
|
set $rsp = 0x7ccccccc # 修改寄存器的值
|
||
|
|
||
|
p # 查看特定变量或表达式的值
|
||
|
bt # 查看函数调用栈
|
||
|
bt full # 详细信息
|
||
|
disassemble # 查看当前函数的汇编,可在后面加函数名看指定汇编
|
||
|
x/10gx $rsp # 查看内存中由$rsp开始的10个八字节数据 g:八字节 x:16进制
|
||
|
|
||
|
info locals # 查看局部变量
|
||
|
info registers # 查看寄存器状态
|
||
|
info program # 查看程序运行信息
|
||
|
info break # 查看断点信息
|
||
|
info threads # 查看所有线程
|
||
|
|
||
|
使用gdb调试core文件
|
||
|
使用ulimit -c unlimited 使挂掉的程序产生core文件
|
||
|
gdb ./a.out core
|
||
|
|
||
|
gdb demo -p [pid] # 调试运行中的程序
|