RongersLY 93cecd7544 BIG MERGE!!!
BIG ADD:
- docker
- archlinux

FIX:
- vim
- c_cpp
  - string hash
  - linux /dev/random
  - thread
  - STL
- linux
  - command
    - last

OTHERS:
- add antenna.md
- mirrors
- makefile.md
2025-04-04 17:35:35 +08:00

1.6 KiB

gdb c/c++ 代码调试工具

使用 -g 生成调试文件,不可以加 -O 选项

目录

基础使用

l n 列出源码 b n 在第n行打断点 break main if var_name > 10 满足条件时打断点 d n 删除断点 lay next 切换窗口布局TUI Ctrl-x a 退出TUI Ctrl-x 1 恢复单窗口布局 Ctrl-x o 切换窗口焦点 ref``Ctrl-L 刷新布局

run

r 开始运行到第一个断点 c 继续运行到下一个断点 s 步入 si 单步汇编 n 步过 ni q 退出

set

set [argc] 传入参数 set var [] # 修改变量的值 set $rsp = 0x7ccc # 修改寄存器的值

mem

p # 查看特定变量或表达式的值 bt # 查看函数调用栈 bt full # 详细信息 x/10gx $rsp # 查看内存中由$rsp开始的10个八字节数据 g:八字节 x:16进制

disassemble

disassemble # 查看当前函数的汇编,可在后面加函数名看指定汇编 x/i $pc # 检查pc处的汇编

info

info locals # 查看局部变量 info registers # 查看寄存器状态 info program # 查看程序运行信息 info break # 查看断点信息 info threads # 查看所有线程

core

  1. ulimit -c unlimited 使挂掉的程序产生core文件

  2. 修改 /proc/sys/kernel/core_pattern 使其在当前目录下生成core文件

`sudo echo "./core" > /proc/sys/kernel/core_pattern

  1. gdb ./a.out core

gdb demo -p [pid] # 调试运行中的程序