SlideShare a Scribd company logo
1 of 9
iPhoneのデバッグハック 株式会社アイビス 代表取締役社長 神谷 栄治
背景 某アプリケーションで開発環境で再現できないアプリケーションがクラッシュする不具合が発生 当初コンソールログにNSLog()でデバッグ情報を出力するβ版をAdHoc配布で一部のユーザに配り、コンソールログとクラッシュログを送ってもらうが、クラッシュログ、コンソールログの取得には統合開発環境のXcodeのオーガナイザー機能が必要であり、あまり多くの人に協力してもらえない
背景(2) リリースビルドでもクラッシュログ(スタックトレースやログ)が、簡単に送ってもらえればデバッグ効率が劇的に改善 簡単に->クラッシュログは、Apple製のメールアプリで送ってもらう うまく具合にスタックトレースが 取得できたので報告します
APIを調査 NSGetUncaughtExceptionHandler() NSSetUncaughtExceptionHandler() signal()でSIGABRT, SIGBUS, SIGSEGV backtrace() backtrace_symbols()
backtrace()の使い方 //スタックトレースの出力 [mstrappendString:@"Stack:"]; 	void* callstack[128]; inti, frames = backtrace(callstack, 128); 	char** strs = backtrace_symbols(callstack, frames); 	for (i = 0; i < frames; ++i) { 		[mstrappendFormat:@"%s",strs[i]]; 	}
フロー NSGetUncaughtExceptionHandler()で現在のExceptionハンドラを記憶(退避) NSSetUncaughtExceptionHandler()で自分のハンドラ関数を登録 signal()でSIGABRT, SIGBUS, SIGSEGVのハンドラ関数を登録 ハンドラ関数でbacktrace()とbacktrace_symbols()スタックトレースを文字列化 その他のログ、OSバージョン番号、アプリバージョン番号を追加し、dump.txtとして保存 終了 異常終了がないときは、ハンドラ関数を退避しておいたものに戻して終了 次回起動時にdump.txtがあれば、mailto:機能でApple製メールアプリを起動
出力例 	Signal:10 Stack: 0 ibisMail 0x0006989d dump + 64 1 ibisMail 0x00069b4b signalHandler + 46 2 libSystem.B.dylib 0x31dcd60b _sigtramp + 26 3 ibisMail 0x000252b9 -[PopClientcreateUnreadMessageWithUIDL:maxMessageCount:] + 76 4 ibisMail 0x00025b85 -[PopClientgetUnreadIdList:] + 348 5 ibisMail 0x000454dd -[Connection receiveMessages:] + 688 6 ibisMail 0x00042db1 -[Connection main] + 188 7 Foundation 0x305023f9 __NSThread__main__ + 858 8 libSystem.B.dylib 0x31d6a5a8 _pthread_body + 28 AppVer:ibisMail 1.2.0 System:iPhone OS OS Ver:3.0 Model:iPhoneDate:09/06/08 21:25:59JST  _sigtramp関数の下で自分のアプリ名がでてくる最初のスタックフレームを探し、アドレスをメモする
モジュールファイル名と行番号へ変換 ビルド時に生成されたdSYMファイルは大切に取っておく gdb info lineコマンドをdSYMディレクトリで実行 cd $PROJ_PATH$/ build/ Release-iphoneos/ ibisMail.app.dSYM/ cd Contents/ Resources/ DWARF  gdb ibisMail  gdb> info line *0x000252b9 Line 333 of “~/IbisMail/Classes/Models/PopClient.m"  starts at address 0x2a386 <-[PopClient retrieve:]+86> and  ends at 0x2a390 <-[PopClient retrieve:]+96>. 行番号とモジュールファイル名が分かる
まとめ リリースビルドでもスタックトレースが得られる スタックトレース、OSバージョン、アプリバージョン、一般ログ、メモリ不足警告発生時刻、クラッシュ時刻をApple製メールで送信 スタックトレースのアドレスから、モジュール名と行番号が分かる ビルド時のdSYMファイルは大切に!

More Related Content

What's hot

.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォームYasushi Kato
 
第0回bluemixユーザー会 Bluemix最新情報 BMXUG
第0回bluemixユーザー会 Bluemix最新情報 BMXUG第0回bluemixユーザー会 Bluemix最新情報 BMXUG
第0回bluemixユーザー会 Bluemix最新情報 BMXUGNoriyuki Egi
 
30min Serverless xTuber
30min Serverless xTuber30min Serverless xTuber
30min Serverless xTuberTakaaki Suzuki
 
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望Yoichi Kawasaki
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリTakayoshi Tanaka
 
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみた
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみたLegacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみた
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみたDaiki Kawanuma
 

What's hot (8)

.NETクロスプラットフォーム
.NETクロスプラットフォーム.NETクロスプラットフォーム
.NETクロスプラットフォーム
 
第0回bluemixユーザー会 Bluemix最新情報 BMXUG
第0回bluemixユーザー会 Bluemix最新情報 BMXUG第0回bluemixユーザー会 Bluemix最新情報 BMXUG
第0回bluemixユーザー会 Bluemix最新情報 BMXUG
 
【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!
 
30min Serverless xTuber
30min Serverless xTuber30min Serverless xTuber
30min Serverless xTuber
 
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
 
First git ops
First git opsFirst git ops
First git ops
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
 
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみた
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみたLegacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみた
Legacy App Operator というパワーワードで Cloud Native 時代を乗り越えられないか考えてみた
 

Similar to iPhoneのデバッグハック

本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃないLINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃないKazumi IWANAGA
 
Google App Engine Java 入門
Google App Engine Java 入門Google App Engine Java 入門
Google App Engine Java 入門tantack
 
ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現Shigeru Tatsuta
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...Insight Technology, Inc.
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてShigeru Tatsuta
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Taisuke Oe
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Yuki Hattori
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)Akira Inoue
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update 新機能とアプリケーション開発
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update新機能とアプリケーション開発20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update新機能とアプリケーション開発
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update 新機能とアプリケーション開発shinobu takahashi
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組みKouji Matsui
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflowTomoyuki Obi
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 bitbank, Inc. Tokyo, Japan
 

Similar to iPhoneのデバッグハック (20)

本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
LogicFlow 概要
LogicFlow 概要LogicFlow 概要
LogicFlow 概要
 
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃないLINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
 
Google App Engine Java 入門
Google App Engine Java 入門Google App Engine Java 入門
Google App Engine Java 入門
 
ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
AIRKinect
AIRKinectAIRKinect
AIRKinect
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps について
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update 新機能とアプリケーション開発
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update新機能とアプリケーション開発20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update新機能とアプリケーション開発
20171108 Tech Summit 2017 最新! Windows 10 Fall Creators Update 新機能とアプリケーション開発
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

iPhoneのデバッグハック