如何查看哪个库拥有lldb回溯的符号

时间:2014-02-26 17:45:05

标签: c macos lldb

我正在尝试调试EXC_BAD_ACCESS,但无法通过lldb使用backtrace来判断执行了什么。当然我错过了那些特定帧的调试符号,但我不知道如何找出哪个库拥有该地址。我尝试了图像列表 - 地址与堆栈帧的地址,但不返回任何内容。任何指针(没有双关语意)将非常感激。我的最终目标是希望看到段错误发生的代码行。我是从命令行执行此操作,而不是从xcode btw执行此操作。

以下是我的堆栈跟踪的快照,其中包含缺少的符号,以防我的解释没有意义。

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

1 个答案:

答案 0 :(得分:3)

通常,库的名称位于地址旁边。由于你的回溯显示了libjvm,我想没有进一步信息的帧是JIT编译的Java代码。