LLDB:打印变量在每次调用时传递给函数?

Art*_*are 1 c macos cocoa function lldb

OS X有一个名为MobileDevice的无证(私有)框架.它用于从iOS设备获取数据.我正在编写使用它的应用程序,我希望能够在iOS设备的电池上提取充电次数.在MobileDevice中执行此操作的函数称为AMDeviceCopyValue().它需要3个参数:设备的地址(只是一个整数),您要复制的值的域(C字符串),以及您要复制的值的键(另一个C字符串. )

由于没有记录此框架,因此很难找到需要使用的字符串.其中一些已在网上发布,但不是计算充电周期的一个.我在网上发现的另一个程序已经这样做了,iCopyBot:http://www.icopybot.com/blog/check-ipad-iphone-battery-charge-cycle-count-without-jailbreaking.htm

我想在LLDB中启动iCopyBot,然后让LLDB打印出每次调用时iCopyBot传递给AMDeviceCopyValue()的域和关键参数.框架对时间敏感,所以我不能让它停止执行中 - 它只需要打印传递的参数并继续运行.

任何人都可以告诉我我必须做什么吗?我已经设法在LLDB中启动iCopyBot并且每次调用该函数时都设置了一个断点,但命令"frame variable"不会为我打印任何内容(我从Apple网站上获取的LLDB文档)建议它应该打印传入的参数......它对我不起作用.)

Art*_*are 10

用H2CO3来推测我在问题评论中的讨论中学到的东西:

您可以通过键入以下命令加载LLDB中所需的任何程序:

lldb <path to application executable>
Run Code Online (Sandbox Code Playgroud)

要在函数上设置断点,请在lldb启动后输入以下命令:

breakpoint set -b <name of function>
Run Code Online (Sandbox Code Playgroud)

要在lldb中实际启动程序,请在加载后输入以下内容并输入所需的断点:

run
Run Code Online (Sandbox Code Playgroud)

要在断点处查看变量,即使没有调试器符号(IE,因为这不是您拥有源的程序),请键入:

register read
Run Code Online (Sandbox Code Playgroud)

如果列表中的任何内容看起来像是具有CoreFoundation或Obj-C对象,请键入以下内容:

po <register of object>
Run Code Online (Sandbox Code Playgroud)

最后,如果你认为其中一个变量指向了一个C字符串,你可以使用:

p (char*)<register of string>
Run Code Online (Sandbox Code Playgroud)

你能用lldb做的事情比我在这里说的要多得多.只需help在lldb提示符下键入,即可查看更多内容.这涵盖了我昨天第一次发布这个问题时想知道的一切.