LLDB:如何制作一个漂亮地打印动态结构数组的自定义函数

LLDB: how to make a custom function that pretty prints a dynamic array of structs

我有一个动态分配的结构数组,我需要在断点处在 LLDB 中打印它。所有这一切都发生在 ObjC 之外的一些纯 C 代码中。

我编写了一个执行打印作业的静态函数,虽然我可以在 LLDB 中调用它,但它只会打印大约 60 行,然后静默停止。有时,除非我在 LLDB 中再次按 Enter,否则它不会打印任何内容。我认为这是由于某种原因造成的线程,但我试图在该函数中执行 dispatch_async 但没有成功 - 它不会打印任何内容。

因此,我正在寻找替代解决方案(可能是 Python 脚本)以获得该数组的漂亮打印,因为它对我的调试工作至关重要。

你说的是这样的吗:

struct MyStruct {/* some stuff */};
struct MyStruct *struct_ptr = malloc(100 * sizeof(struct MyStruct));

并且您想打印 struct_ptr,就好像您已经完成了:

struct MyStruct struct_arr[100];

如果您在 Xcode 8.0 之前使用 lldb,您可以使用:

(lldb) 内存读取 -c 100 -t MyStruct struct_ptr

如果您拥有 Xcode 8.0 测试版之一,则可以使用新的 parray 命令:

(lldb) parray 100 struct_ptr