lldb(gdb同位)

C++调试:

英文 专业翻译 说明 LLDB 命令 GDB 命令
Step into 步入 / 进入函数 调试时进入函数内部执行 step / s step / s
Step over 步过 / 跳过函数 执行当前行但不进入函数内部 next / n next / n
Step out 步出 / 跳出函数 执行完当前函数剩余代码并返回 finish / fin finish / fin
Step back 步退 / 回退一步 调试时回退到上一执行位置(部分调试器支持逆向执行) reverse-step / revs(需启用反向调试) reverse-step / rs(需启用进程记录)
Run to cursor 运行到光标处 执行代码直到到达光标所在行位置 until <行号>thread until <地址> until <行号>advance <位置>
Continue 继续执行 从当前位置继续运行直到下一个断点或程序结束 continue / c continue / c
Start 开始调试 / 启动 启动调试会话并开始执行程序 run / rprocess launch run / r
Breakpoint 断点 在指定代码行设置的暂停标记,执行到此处时中断 breakpoint set / b break / b
Set next statement 设置下一语句 手动指定程序下一步要执行的代码行(不改变程序状态) thread jump --line <行号>jump jump <行号>set $pc = <地址>
Watch variable 监视变量 持续观察特定变量的值变化 watchpoint set variable <变量名> / wa set var watch <变量名>rwatch / awatch
Watch window 监视窗口 IDE中显示监视变量值的界面区域 watchpoint list / frame variable(查看) info watchpoints / print <变量>(查看)
The call stack 调用栈 显示程序当前函数调用层次的堆栈信息 thread backtrace / bt backtrace / bt

LLDB & GDB 常用命令速查

# ========== 断点管理 ==========
# LLDB
b main                    # 在 main 函数设置断点
b filename.cpp:42         # 在第42行设置断点
breakpoint list           # 列出所有断点
breakpoint delete 1       # 删除编号1的断点

# GDB
break main                # 在 main 函数设置断点
break filename.cpp:42     # 在第42行设置断点
info breakpoints          # 列出所有断点
delete 1                  # 删除编号1的断点

# ========== 执行控制 ==========
# LLDB / GDB 相同
run                       # 启动程序
continue                  # 继续执行
step                      # 步入(进入函数)
next                      # 步过(跳过函数)
finish                    # 步出(跳出当前函数)

# LLDB 特有
until 100                 # 运行到第100行

# GDB 特有
until 100                 # 运行到第100行
advance main:50           # 运行到指定位置

# ========== 反向调试 ==========
# LLDB
reverse-continue          # 反向继续
reverse-step              # 反向单步
reverse-next              # 反向步过

# GDB(需先启用记录)
record full               # 启用进程记录
reverse-continue          # 反向继续
reverse-step              # 反向单步
reverse-next              # 反向步过

# ========== 监视点(数据断点)==========
# LLDB
watchpoint set var x      # 监视变量 x 的变化
watchpoint list           # 列出所有监视点
watchpoint delete 1       # 删除监视点

# GDB
watch x                   # 监视变量 x 的写入
rwatch x                  # 监视变量 x 的读取
awatch x                  # 监视变量 x 的读写
info watchpoints          # 列出所有监视点
delete 1                  # 删除监视点

# ========== 调用栈 ==========
# LLDB
bt                        # 显示完整调用栈
frame select 2            # 切换到第2层栈帧
up / down                 # 上下移动栈帧

# GDB
bt                        # 显示完整调用栈
frame 2                   # 切换到第2层栈帧
up / down                 # 上下移动栈帧
info frame                # 显示当前帧详细信息

# ========== 其他 ==========
# LLDB
thread jump --line 50     # 设置下一语句为第50行
frame variable            # 查看当前帧的所有变量
expr <表达式>              # 计算并显示表达式结果

# GDB
jump 50                   # 跳转到第50行执行
info locals               # 查看当前帧的局部变量
info args                 # 查看当前帧的参数
print <表达式>             # 计算并显示表达式结果
set var x=10              # 修改变量值
posted @ 2026-02-12 22:21  游翔  阅读(1)  评论(0)    收藏  举报