c - LLDB - 评估寄存器中的地址

标签 c debugging gdb lldb

要在 LLDB 中查看我的堆栈,我目前使用以下内容:

(lldb) register read rbp --format hex
rbp = 0x00007fff5fbff820

然后查看前 64 字节向下增长:

(lldb) memory read --size 4 --format x --count 16 `0x00007fff5fbff820-64`
0x7fff5fbff7e0: 0x5fbff900 0x00007fff 0x00000000 0x00000000
0x7fff5fbff7f0: 0x00000000 0x00000000 0x00000000 0x00000000
0x7fff5fbff800: 0x00000000 0x00000000 0x00000000 0x00000000
0x7fff5fbff810: 0x5fbff838 0x00000006 0x00000008 0x00000000

我还没找到怎么做,但是有什么办法可以替换表达式:

`0x00007fff5fbff820-64`

更像是:

`%rbp-64`

谢谢!

最佳答案

`$rbp-64`

还有用于内存读取和打印的快捷格式化程序,其作用类似于 gdb。例如

x/16x `$rbp`

有关 x/和 p/可接受的格式化程序字符的详细信息,请参阅“help gdb-format”。这些实际上只是 memory read -G 和 expr -G 的命令别名。

关于c - LLDB - 评估寄存器中的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968261/

相关文章:

c - 带直流电机/编码器的 PID 反馈和位置 Controller

C跳过一个函数的一个命令?

r - 在函数中获取浏览状态

c++ - 我可以控制调试器窗口中显示的 float 和 double 变量的位数吗?

shell - 来自外部程序或 shell 的 LLDB 设置参数

c - 为什么我的 C 代码不能使用指针和结构体工作?

c - Ncurses 错误鼠标坐标超过 222 宽度或高度终端

visual-studio-2010 - 如何根据函数的参数中断 Win32 API 函数?

multithreading - 使用多线程python扩展调试多线程程序时GDB挂起

c++ - 添加 -rdynamic 标志后,gcov 停止生成 gcda 文件(__gcov_flush() 通过 gdb 调用)