lldb上是否有等效的dds

Is there an equivalent of dds on lldb

我正在尝试调试 OSX 上的一个问题,但 lldb 妨碍了我。我认为我的程序有损坏的堆栈,我希望能够手动遍历堆栈。

在 WinDBG 中,有一个名为 dds 的命令,我可以使用它来转储堆栈上的所有指针(基本上,从 rsp 走,走向更高的地址)并解析所有指向符号的指针(和如果它与代码不对应,则不打印任何内容),我正在 lldb 上寻找类似的命令。我知道我可以 memory read --format x 一个接一个地手动查找它们,然后使用 image lookup 查找它们,但这太耗时了。

没有 built-in 命令来完成行走本身,因此您必须手动从 rsp 向上翻页内存。

但您可能会发现 "A" 格式对完成此任务很有帮助。这会将内存打印为 address-sized 个单词的列表,对于指向 TEXT 或 DATA 的任何值,它将打印符号的名称。喜欢:

(lldb) mem read -fA `$rsp - 16 * 8` `$rsp` -fA 
0x7ffeefbff660: 0x0000000000000000
0x7ffeefbff668: 0x00007ffeefbff660
0x7ffeefbff670: 0x0000003002000000
0x7ffeefbff678: 0x00007fff6e2ee568 libsystem_platform.dylib`__platform_sigaction + 103
0x7ffeefbff680: 0x0000000000000000
0x7ffeefbff688: 0x0000000000000000
0x7ffeefbff690: 0x0000000000013dc9
0x7ffeefbff698: 0x0000000000000000
0x7ffeefbff6a0: 0x00007fff6e238fe2 libsystem_kernel.dylib`__sigaction + 10
0x7ffeefbff6a8: 0x0000000000000000
0x7ffeefbff6b0: 0x000000000000001e
0x7ffeefbff6b8: 0x0000000000013dc9
0x7ffeefbff6c0: 0x00007ffeefbff700
0x7ffeefbff6c8: 0x0000000100002020 _dyld_private
0x7ffeefbff6d0: 0x000000000000000e
0x7ffeefbff6d8: 0x0000000100000f45 signals`main + 53 at signals.c:13:3