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

标签 c macos lldb

我正在尝试调试 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/

相关文章:

Android Studio native 调试不起作用,始终显示 "This file is not part of the project"

objective-c - EXC_BAD_ACCESS 在执行 NSDictionary objectForKey 时 - 但对象在那里

MonoDevelop 中的 TFS 支持(插件、外部工具等)?

android - Eclipse - ADT 插件不自动完成 xml

c - 如何使用可选的 GNU guile 库 ("--with-guile"来配置.ac)

c - _C99的Bool数据类型

python - OSX brew python "Could not find a version that satisfies the requirement pyopencv"

ios - XCode 宏上的符号断点

c - 如何在 SIGINT 上仅终止前台子进程?

c - 如何更换系统功能?