SlideShare a Scribd company logo
SymbolicateCrash使用教學
分析Crash Log的工具
2014/06/30
HappyMan
使用目的
• 有天我們想要研究Crash Log,也就
是.crash檔,來修正bug
• 但是內容沒有轉譯完全,所以不知道是哪
個view controller或method發生問題
– (原始)0 GarbageGuard
0x000000010008adf4 0x100040000 + 306676
– (想要)0 GarbageGuard
0x000000010008adf4 -[IAPHelper
productsRequest:didReceiveResponse:]
(IAPHelper.m:76)
步驟
• 在桌面建立一個crash資料夾(方便操作)
• Xcode->Window->Organize找到
Archives找到App-右擊-Show in Finder
• 尋找產生.crash檔案的源頭.iap檔
• 複製.app和.app.dSYM到crash夾文件-右
擊-xcarchive文件->顯示套件內容
Submitted的.ipa檔
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學
重點
• 尋找symbolicatecrash工具存放的地方
– $ find /Applications/Xcode.app -name
symbolicatecrash -type f
– /Applications/Xcode.app/Contents/Develo
per/Platforms/iPhoneOS.platform/Develop
er/Library/PrivateFrameworks/DTDeviceKit
Base.framework/Versions/A/Resources/sym
bolicatecrash
• 將symbolicatecrash拷貝到crash資料夾
– $ cp
/Applications/Xcode.app/Contents/Devel
oper/Platforms/iPhoneOS.platform/Devel
oper/Library/PrivateFrameworks/DTDevic
eKitBase.framework/Versions/A/Resource
s/symbolicatecrash
/Users/Jason/Desktop/crash
• 將.crash檔案也拷到當前資料夾裡面
– 自己的或別人(審委)的
執行symbolicatecrash
• 將終端機移至crash資料夾
– $ cd
– $ cd /Users/Jason/Desktop/crash
• 查看crash資料夾有哪些檔案(4個)
– $ ls
– GarbageGuard.app GarbageGuard.app.dSYM
symbolicatecrash test.crash
執行symbolicatecrash
• 執行關鍵指令
– $ ./symbolicatecrash test.crash
GarbageGuard.app.dSYM >
GarbageGuard_symbol.crash
• 可能會發生
– Error: "DEVELOPER_DIR" is not defined
at ./symbolicatecrash line 60.
• 執行此行解決它
– $ export
DEVELOPER_DIR="/Applications/XCode.app/Content
s/Developer”
• 再次執行關鍵指令
– $ ./symbolicatecrash test.crash
GarbageGuard.app.dSYM >
GarbageGuard_symbol.crash
Crash資料夾
• 生成_symbol.crash
原始.crash(節錄)
• Thread 0 name: Dispatch queue: com.apple.main-thread
• Thread 0 Crashed:
• 0 GarbageGuard 0x000000010008adf4 0x100040000 + 306676
• 1 StoreKit 0x0000000186ce0fac __34-[SKProductsRequest
_handleReply:]_block_invoke + 508
• 2 libdispatch.dylib 0x0000000190d5c010 _dispatch_call_block_and_release + 20
• 3 libdispatch.dylib 0x0000000190d5bfd0 _dispatch_client_callout + 12
• 4 libdispatch.dylib 0x0000000190d5f1d8 _dispatch_main_queue_callback_4CF +
332
• 5 CoreFoundation 0x0000000183d66c28
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
• 6 CoreFoundation 0x0000000183d64f68 __CFRunLoopRun + 1448
• 7 CoreFoundation 0x0000000183ca5c1c CFRunLoopRunSpecific + 448
• 8 GraphicsServices 0x0000000189945c08 GSEventRunModal + 164
• 9 UIKit 0x0000000186dd6fd8 UIApplicationMain + 1152
• 10 GarbageGuard 0x0000000100059064 0x100040000 + 102500
• 11 libdyld.dylib 0x0000000190d77a9c start + 0
生成.crash(節錄)
• Thread 0 name: Dispatch queue: com.apple.main-thread
• Thread 0 Crashed:
• 0 GarbageGuard 0x000000010008adf4 -[IAPHelper
productsRequest:didReceiveResponse:] (IAPHelper.m:76)
• 1 StoreKit 0x0000000186ce0fac __34-[SKProductsRequest
_handleReply:]_block_invoke + 508
• 2 libdispatch.dylib 0x0000000190d5c010 _dispatch_call_block_and_release + 20
• 3 libdispatch.dylib 0x0000000190d5bfd0 _dispatch_client_callout + 12
• 4 libdispatch.dylib 0x0000000190d5f1d8 _dispatch_main_queue_callback_4CF +
332
• 5 CoreFoundation 0x0000000183d66c28
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
• 6 CoreFoundation 0x0000000183d64f68 __CFRunLoopRun + 1448
• 7 CoreFoundation 0x0000000183ca5c1c CFRunLoopRunSpecific + 448
• 8 GraphicsServices 0x0000000189945c08 GSEventRunModal + 164
• 9 UIKit 0x0000000186dd6fd8 UIApplicationMain + 1152
• 10 GarbageGuard 0x0000000100059064 main (main.m:16)
• 11 libdyld.dylib 0x0000000190d77a9c start + 0
參考
• [iOS Crash文件分析]-如何使用symbolicatecrash工具
– http://www.cocoachina.com/bbs/read.php?tid=180736
• Crash Report 介紹
– http://kenwang0816.blogspot.tw/2013/09/crash-report-
iosappcrash.html
• Crash and dSYM
– http://kenwang0816.blogspot.tw/2013/09/exceptioniosapple
app-crash.html
• 別用symbolicatecrash來解析crash Log了
– http://wonderffee.github.io/blog/2013/08/14/dont-use-
symbolicatecrash-to-symbolicate-the-crash-log/
• crash log in device
– http://stackoverflow.com/questions/4604843/crash-log-in-
device

More Related Content

Symbolicate Crash 使用教學

  • 2. 使用目的 • 有天我們想要研究Crash Log,也就 是.crash檔,來修正bug • 但是內容沒有轉譯完全,所以不知道是哪 個view controller或method發生問題 – (原始)0 GarbageGuard 0x000000010008adf4 0x100040000 + 306676 – (想要)0 GarbageGuard 0x000000010008adf4 -[IAPHelper productsRequest:didReceiveResponse:] (IAPHelper.m:76)
  • 3. 步驟 • 在桌面建立一個crash資料夾(方便操作) • Xcode->Window->Organize找到 Archives找到App-右擊-Show in Finder • 尋找產生.crash檔案的源頭.iap檔 • 複製.app和.app.dSYM到crash夾文件-右 擊-xcarchive文件->顯示套件內容
  • 7. 重點 • 尋找symbolicatecrash工具存放的地方 – $ find /Applications/Xcode.app -name symbolicatecrash -type f – /Applications/Xcode.app/Contents/Develo per/Platforms/iPhoneOS.platform/Develop er/Library/PrivateFrameworks/DTDeviceKit Base.framework/Versions/A/Resources/sym bolicatecrash
  • 8. • 將symbolicatecrash拷貝到crash資料夾 – $ cp /Applications/Xcode.app/Contents/Devel oper/Platforms/iPhoneOS.platform/Devel oper/Library/PrivateFrameworks/DTDevic eKitBase.framework/Versions/A/Resource s/symbolicatecrash /Users/Jason/Desktop/crash
  • 10. 執行symbolicatecrash • 將終端機移至crash資料夾 – $ cd – $ cd /Users/Jason/Desktop/crash • 查看crash資料夾有哪些檔案(4個) – $ ls – GarbageGuard.app GarbageGuard.app.dSYM symbolicatecrash test.crash
  • 11. 執行symbolicatecrash • 執行關鍵指令 – $ ./symbolicatecrash test.crash GarbageGuard.app.dSYM > GarbageGuard_symbol.crash • 可能會發生 – Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60. • 執行此行解決它 – $ export DEVELOPER_DIR="/Applications/XCode.app/Content s/Developer” • 再次執行關鍵指令 – $ ./symbolicatecrash test.crash GarbageGuard.app.dSYM > GarbageGuard_symbol.crash
  • 13. 原始.crash(節錄) • Thread 0 name: Dispatch queue: com.apple.main-thread • Thread 0 Crashed: • 0 GarbageGuard 0x000000010008adf4 0x100040000 + 306676 • 1 StoreKit 0x0000000186ce0fac __34-[SKProductsRequest _handleReply:]_block_invoke + 508 • 2 libdispatch.dylib 0x0000000190d5c010 _dispatch_call_block_and_release + 20 • 3 libdispatch.dylib 0x0000000190d5bfd0 _dispatch_client_callout + 12 • 4 libdispatch.dylib 0x0000000190d5f1d8 _dispatch_main_queue_callback_4CF + 332 • 5 CoreFoundation 0x0000000183d66c28 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8 • 6 CoreFoundation 0x0000000183d64f68 __CFRunLoopRun + 1448 • 7 CoreFoundation 0x0000000183ca5c1c CFRunLoopRunSpecific + 448 • 8 GraphicsServices 0x0000000189945c08 GSEventRunModal + 164 • 9 UIKit 0x0000000186dd6fd8 UIApplicationMain + 1152 • 10 GarbageGuard 0x0000000100059064 0x100040000 + 102500 • 11 libdyld.dylib 0x0000000190d77a9c start + 0
  • 14. 生成.crash(節錄) • Thread 0 name: Dispatch queue: com.apple.main-thread • Thread 0 Crashed: • 0 GarbageGuard 0x000000010008adf4 -[IAPHelper productsRequest:didReceiveResponse:] (IAPHelper.m:76) • 1 StoreKit 0x0000000186ce0fac __34-[SKProductsRequest _handleReply:]_block_invoke + 508 • 2 libdispatch.dylib 0x0000000190d5c010 _dispatch_call_block_and_release + 20 • 3 libdispatch.dylib 0x0000000190d5bfd0 _dispatch_client_callout + 12 • 4 libdispatch.dylib 0x0000000190d5f1d8 _dispatch_main_queue_callback_4CF + 332 • 5 CoreFoundation 0x0000000183d66c28 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8 • 6 CoreFoundation 0x0000000183d64f68 __CFRunLoopRun + 1448 • 7 CoreFoundation 0x0000000183ca5c1c CFRunLoopRunSpecific + 448 • 8 GraphicsServices 0x0000000189945c08 GSEventRunModal + 164 • 9 UIKit 0x0000000186dd6fd8 UIApplicationMain + 1152 • 10 GarbageGuard 0x0000000100059064 main (main.m:16) • 11 libdyld.dylib 0x0000000190d77a9c start + 0
  • 15. 參考 • [iOS Crash文件分析]-如何使用symbolicatecrash工具 – http://www.cocoachina.com/bbs/read.php?tid=180736 • Crash Report 介紹 – http://kenwang0816.blogspot.tw/2013/09/crash-report- iosappcrash.html • Crash and dSYM – http://kenwang0816.blogspot.tw/2013/09/exceptioniosapple app-crash.html • 別用symbolicatecrash來解析crash Log了 – http://wonderffee.github.io/blog/2013/08/14/dont-use- symbolicatecrash-to-symbolicate-the-crash-log/ • crash log in device – http://stackoverflow.com/questions/4604843/crash-log-in- device