对于iOS崩溃报告,将崩溃报告拖放到管理器就足够了 .
Symbolicating iPhone App Crash Reports
但是这种方法不适用于Mac OSX崩溃报告 .
如何表示我的Mac OSX崩溃报告?
谢谢 !!
您可以使用atos命令获取应用程序崩溃的行号 .
这是一个快速指南:
为您的工作文件创建一个目录
打开Xcode,选择Window-> Organizer,转到Archive选项卡,找到发生崩溃的应用程序版本 .
右键单击应用档案并选择"Show in Finder"
右键单击.xarchive,选择"Show Contents"并找到AppName.dSYM目录和应用程序并将它们复制到您的工作文件夹
将堆栈跟踪复制到工作文件夹
打开终端并切换到您的工作文件夹 . ls应显示YourApp.app YourApp.app.dSYM stacktrace.txt
在TextEdit中打开堆栈跟踪 . 您需要从 Headers (系统架构 - 例如X86-64)和崩溃的地址中找到代码类型 . 搜索线程以找到崩溃的那个(它会说像"Thread 2 Crashed"之类的东西),然后找到你的对象 . 您需要该行的两个地址(十六进制数字)来获取代码行 .
获得所有信息后,您需要在终端中运行以下内容:
atos -o YourApp.app/Contents/MacOS/YourApp -arch x86_64 -l [load-address] [address]
例如,下面是一个来自堆栈跟踪的摘录:
Process: MyApp [228] Path: /Applications/MyApp.app/Contents/MacOS/MyApp Identifier: uk.co.company.app Version: 1.0 (1) App Item ID: 774943227 App External ID: 218062633 Code Type: X86-64 (Native) Parent Process: launchd [154] Responsible: MyApp [228] User ID: 501 Date/Time: 2013-12-17 10:20:45.816 +0100 OS Version: Mac OS X 10.9 (13A603) Report Version: 11 Anonymous UUID: 7AA662B1-7696-A2C5-AF56-9D4BA2CE9515 Crashed Thread: 2 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 <snip> Thread 2 Crashed: 0 libsystem_kernel.dylib 0x00007fff8b95a866 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff8bf4f35c pthread_kill + 92 2 libsystem_c.dylib 0x00007fff87571bba abort + 125 3 libsystem_malloc.dylib 0x00007fff897ae093 free + 411 4 uk.co.company.app 0x0000000103580606 0x10356e000 + 75270 5 uk.co.company.app 0x00000001035803da 0x10356e000 + 74714 6 com.apple.Foundation 0x00007fff8d00970b __NSThread__main__ + 1318 7 libsystem_pthread.dylib 0x00007fff8bf4e899 _pthread_body + 138 8 libsystem_pthread.dylib 0x00007fff8bf4e72a _pthread_start + 137 9 libsystem_pthread.dylib 0x00007fff8bf52fc9 thread_start + 13
我可以看到“代码类型”是x86_64,线程2崩溃,第4行我的代码运行,所以我们有我们需要的地址 . 使用此信息,我运行以下内容:
$ atos -o MyApp.app/Contents/MacOS/MyApp -arch x86_64 -l 0x10356e000 0x0000000103580606
返回:
got symbolicator for MyApp.app/Contents/MacOS/MyApp, base address 100000000 obj_free (in MyApp) (somefile.c:135)
告诉我我的应用程序在somefile.c的第135行崩溃了
@inkjet上面的评论值得回答 . 他构建了一个应用程序,可以从dsym和.crash文件中完整地进行符号化 .
我制作的Sumbolon的免费替代品:bch.us.to/apps/macsymbolicator - 它使用atos,方法与Rich Able在下面描述的方式相同 . - 油墨13年12月24日4:39
把它们放在一起:
从here下载Mac Symbolicator
右键单击应用档案并选择“在Finder中显示”
右键单击.xarchive,选择“显示内容”并找到AppName.dSYM目录
将.crash文件和AppName.dsym拖到Sumbolon
魔术发生了
this link
此链接解释了所有用符号表示崩溃日志的崩溃日志 . 你只需要将.dsyms文件,.app文件和崩溃日志放在同一个文件夹中
我环顾四周,发现没有比这更好的了 . 所以我发布它希望这将有助于其他人 .
3 回答
您可以使用atos命令获取应用程序崩溃的行号 .
这是一个快速指南:
为您的工作文件创建一个目录
打开Xcode,选择Window-> Organizer,转到Archive选项卡,找到发生崩溃的应用程序版本 .
右键单击应用档案并选择"Show in Finder"
右键单击.xarchive,选择"Show Contents"并找到AppName.dSYM目录和应用程序并将它们复制到您的工作文件夹
将堆栈跟踪复制到工作文件夹
打开终端并切换到您的工作文件夹 . ls应显示YourApp.app YourApp.app.dSYM stacktrace.txt
在TextEdit中打开堆栈跟踪 . 您需要从 Headers (系统架构 - 例如X86-64)和崩溃的地址中找到代码类型 . 搜索线程以找到崩溃的那个(它会说像"Thread 2 Crashed"之类的东西),然后找到你的对象 . 您需要该行的两个地址(十六进制数字)来获取代码行 .
获得所有信息后,您需要在终端中运行以下内容:
atos -o YourApp.app/Contents/MacOS/YourApp -arch x86_64 -l [load-address] [address]
例如,下面是一个来自堆栈跟踪的摘录:
我可以看到“代码类型”是x86_64,线程2崩溃,第4行我的代码运行,所以我们有我们需要的地址 . 使用此信息,我运行以下内容:
返回:
告诉我我的应用程序在somefile.c的第135行崩溃了
@inkjet上面的评论值得回答 . 他构建了一个应用程序,可以从dsym和.crash文件中完整地进行符号化 .
把它们放在一起:
从here下载Mac Symbolicator
打开Xcode,选择Window-> Organizer,转到Archive选项卡,找到发生崩溃的应用程序版本 .
右键单击应用档案并选择“在Finder中显示”
右键单击.xarchive,选择“显示内容”并找到AppName.dSYM目录
将.crash文件和AppName.dsym拖到Sumbolon
魔术发生了
this link
此链接解释了所有用符号表示崩溃日志的崩溃日志 . 你只需要将.dsyms文件,.app文件和崩溃日志放在同一个文件夹中
我环顾四周,发现没有比这更好的了 . 所以我发布它希望这将有助于其他人 .