lldb.macosx.crashlog 在哪里?

Where is lldb.macosx.crashlog?

总结

lldb 脚本 lldb.macosx.crashlog 有一些错误阻止我调试我的崩溃。我想找到这些脚本的源代码并修复它们。他们在哪里?

我使用如下命令查看了 /Applications/Library~/Library

sudo find /Library -name 'lldb.macosx.crashlog*'

详情

WWDC 2018 414 video titled Understanding Crashes and Crash Logslldb 中对 运行 command script import lldb.macosx.crashlog 说。这将导入一组脚本。

(lldb) command script list 
Current user-defined commands:
  crashlog      -- For more information run 'help crashlog'
  cstr_refs     -- For more information run 'help cstr_refs'
  find_variable -- For more information run 'help find_variable'
  malloc_info   -- For more information run 'help malloc_info'
  objc_refs     -- For more information run 'help objc_refs'
  ptr_refs      -- For more information run 'help ptr_refs'
  save_crashlog -- For more information run 'help save_crashlog'
For more information on any command, type 'help <command-name>'.

WWDC 视频中使用的主要脚本是crashlog,如下所示:

(lldb) crashlog /Users/jeff/Library/Developer/Xcode/Products/com.myapp/1.2.3\ \(4\)/Crashes/AppStore/hash.xccrashpoint/DistributionInfos/all/Logs/LocallySymbolicated/date-uuid.crash

只要你有从 App Store Connect 下载的 dSYM 文件(因为 bitcode)和你上传到 App Store Connect 的应用存档在你的文件系统的某个地方,crashlog 脚本就会找到它们好的。

但是,出现以下错误。

首先,在逐步执行每个 dSYM 的“为...获取符号”时,它提前停止并打印堆栈跟踪。

然后,它在线程 0 中打印关于 8 次调用的错误:

error: python exception: can only concatenate str (not "NoneType") to str

最后,lldb处于disassemble不起作用的状态。

在 macOS 上,如果您不确定文件名或位置,您可能会发现 mdfind 很有用;它使用与 Spotlight 相同的中央元数据存储。

运行:

mdfind -name crashlog

在我的机器上,列出(除其他外)这些相关文件:

/Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/Python/lldb/macosx/crashlog.py
/Library/Developer/CommandLineTools/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/Python3/lldb/macosx/crashlog.py

这些提供:

  • crashlog
  • save_crashlog

命令。