摘要
lldb
脚本lldb.macosx.crashlog
中有一些错误,使我无法调试崩溃。我想找到这些脚本的源代码并修复它们。他们在哪里?
我已经使用以下命令查看了/Applications
、/Library
和~/Library
:
sudo find /Library -name 'lldb.macosx.crashlog*'
详细信息
WWDC 2018 414名为了解崩溃和崩溃日志的视频称在lldb
中运行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文件(因为比特码)和你上传到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
命令。