似乎lldb
只能使用frame variable
内省变量,无论是调试信息还是方法调用的开头。
但有时我们的代码会破坏某些系统或第三个lib,我们可能想要反省变量或堆栈。我找到了一个解决方案,Disassemble
框架,读取汇编代码并手动内省堆栈。
但是,当它不在最顶层时,我找不到快速获取帧堆栈的方法。在lldb或Xcode中执行此操作的任何简单方法。
我发现声称可以转储所有堆栈内存的project in github。那么我可以使用一些原生的lldb命令来转储方法调用的堆栈内存吗?
答案 0 :(得分:0)
听起来像lldb的Python API最适合你想做的调查:
http://lldb.llvm.org/python_reference/index.html
然后,您需要CFA,您可以使用SBStackFrame.GetCFA()从Python API获取。输入功能时,CFA(调用帧地址)将成为堆栈帧地址。从那里到下一个更年轻的框架的CFA是这个框架使用的堆栈内存。
您可以使用SBProcess.ReadMemory来获取内存。