我正在尝试编写一个DTrace脚本,它将向我显示传递给-[NSURLConnection sendSynchronousRequest:returningResponse:error:]
的参数,并且我找不到一个用于从传入的字符串中提取字符串的结构NSString
参数。这question有一个适用于OS X应用程序的答案,但它不适用于我使用iOS模拟器的应用程序。定义用于Objective-C对象的DTrace兼容结构
尽管我正在寻找这个特定示例的解决方案,但我更感兴趣的是学习定义/发现任何给定Objective-C对象的基础内存结构的最佳方法。正如您从我写的OS X测试应用程序中可以看到的,NSString
参数并不总是将原始字符串数据放在同一个地方。在__NSCFString
似乎位于16字节英寸的位置(长度前缀)的情况下。如果是__NSCFConstant
字符串,则它在其他地方看起来并不明显,看着原始内存转储。
如果在系统头文件中定义了结构体,它会告诉我我在找什么,那将是第一步,但我认为LLDB应该能够向我展示有用的提示。