检查变量和寄存器
检查变量
显示变量的内容
- gdb
- lldb
(gdb) p bar
(gdb) p/x bar
(lldb) p bar
(lldb) p/x bar
显示当前栈帧的参数和局部变量
- gdb
- lldb
(gdb) info args
(gdb) info locals
(lldb) frame variable
(lldb) fr v
# add '-no-args' to disable args
(lldb) frame variable --no-args
(lldb) fr v -a
检查数组
- gdb
- lldb
(gdb) p *ptr@10
(lldb) parray 10 ptr
检查寄存器
显示当前线程的通用寄存器
- gdb
- lldb
(gdb) info registers
(lldb) register read
显示当前线程的所有寄存器
- gdb
- lldb
(gdb) info all-registers
(lldb) register read --all
(lldb) re r -a
显示当前线程中指定寄存器的值
- gdb
- lldb
(gdb) info all-registers rax rsp rbp
(lldb) register read rax rsp rbp
显示当前线程中指定寄存器的值,格式为二进制
- gdb
- lldb
(gdb) p/t $rax
(lldb) register read --format binary rax
(lldb) re r -f b rax
# LLDB now supports the GDB shorthand format syntax but there can’t be space after the command
(lldb) register read/t rax
(lldb) p/t $rax
打印表达式结果的动态类型 (C++)
- gdb
- lldb
(gdb) set print object 1
(gdb) p someCPPObjectPtrOrReference
(Only works for C++ objects)
(lldb) expr -d 1 -- [SomeClass returnAnObject]
(lldb) expr -d 1 -- someCPPObjectPtrOrReference
# or set dynamic type printing to be the default:
(lldb) settings set target.prefer-dynamic run-target