我正在尝试调试 EXC_BAD_ACCESS,但无法判断使用 lldb 的回溯执行了什么。当然,我缺少这些特定帧的调试符号,但我不知道如何找出哪个库拥有该地址。我尝试了 image list --address 和堆栈帧的地址,但没有返回任何内容。任何指点(没有双关语)将不胜感激。我的最终目标是希望看到发生段错误的代码行。我是从命令行执行此操作,而不是从 xcode 顺便说一句。
这是我的堆栈跟踪的快照,其中缺少符号,以防我的解释没有意义。
frame #0: 0x0000000103f7e2dc
frame #1: 0x0000000103f5c3d0
frame #2: 0x0000000103f5c2b3
frame #3: 0x0000000103f5c2b3
frame #4: 0x0000000103f5c2b3
frame #5: 0x0000000103f5c2b3
frame #6: 0x0000000103f5c0d8
frame #7: 0x0000000103f564e7
frame #8: 0x00000001036d6d90 libjvm.dylib`JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 554
frame #9: 0x00000001036d6b60 libjvm.dylib`JavaCalls::call(JavaValue*, methodHandle, JavaCallArguments*, Thread*) + 40
frame #10: 0x0000000103860580 libjvm.dylib`Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*) + 2556
frame #11: 0x00000001038609e6 libjvm.dylib`Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*) + 366
frame #12: 0x00000001037236d7 libjvm.dylib`JVM_InvokeMethod + 358
frame #13: 0x0000000103f6e4b9
frame #14: 0x0000000103f5c2b3
frame #15: 0x0000000103f5c2b3
frame #16: 0x0000000103f5c961
frame #17: 0x0000000103f5c2b3
frame #18: 0x0000000103f5c2b3
frame #19: 0x0000000103f5c2b3
frame #20: 0x0000000103f5c2b3
frame #21: 0x0000000103f5c0d8
frame #22: 0x0000000103f5c0d8
最佳答案
通常,图书馆的名称位于地址旁边。由于您的回溯显示了 libjvm,因此我猜测没有更多信息的帧是 JIT 编译的 Java 代码。
关于c - 如何查看哪个库拥有 lldb 回溯的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049164/