まとまりのないブログ

something which something is something

交差運転日記

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

投稿日:

xcodeでクラッシュする場合の話。

return UIApplicationMain をキャッチしてマウスカーソルを合わせるとEXC_BAD_ACCESSとだけ出る。コンソールログには何も出ていない。ゆえにどこで何が原因かということがまるでわからない。私の場合は特に処理の重いルーチンで発生していて、クラッシュの再現性もできなく不規則的に発生するので困難を極めた。それでもバグを取り除かなければならないのでまず手始めにやることはログの情報量を増やすことから始める。Edit SchemeからDiagnosticsタブでデバッグ時のオプションを選択できるようになっているので、そこからログに関係する項目にチェックしてコンソールに表示される情報を増やす。Loggingの項目のどれでもいいが例えばLog Dynamic Linker API Usageにチェックを入れて実行してみたところ変数名とその値がログに表示されるようになる。とりあえずその状態でデバッグをしてみることにする。クラッシュの再現性は不規則であったが、ログを確認してみると特定の関数内の変数に関わるところでクラッシュしているというのがわかった。クラッシュの原因は厳密にはわからないもののどこでクラッシュが発生しているかという関数の場所はログに表示される変数名から特定することができた。結局原因はプロパティ変数にアクセスする際のささいなミスだったんだけれども。

原因不明のEXC_BAD_ACCESSがでるクラッシュでもデバッグオプションでログの情報量を増やせば怪しい箇所を特定することができる。クラッシュした時に原因となる箇所がログに表示されれば一番いいのだけれど、表示されない場合もあるのでそういう場合は実行中にログを流し続ける設定にしてクラッシュしたらその直前のログをチェックして場所を限定する、という具合にやると厄介なバグでも修正できるかもしれない。

デバッグのオプション設定

Memory Management

Enable Malloc Scribble
Enable Malloc Guard Edges
Enable Guard Malloc
Enable Zonbie Objects

Runtime Sanitization

Enable Address Sanitizer Requires recompilation

Logging

Distributed Objects
Malloc Stack
Log Dynamic Linker API Usage
Log Library Loads

Dubugger

Stop on Debugger() and DebugStr()

-交差運転日記

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

メモ:詰ますの定義

・玉が逃げるために移動する場所がなくなる状態(玉の移動できる範囲全てに敵駒の利きがある状態) ・王手をかけている駒を玉自身で取ることができない ・味方の駒・持ち駒による王手遮断ができない ・打ち歩詰め …

no image

ProxyPassReverseCookiePath

リバースプロキシを使うとセッション情報がアクセスするたびに上書きされて保持できない現象が発生してちょっと困った。調べ見ると、ProxyPassReverseCookiePathを設定してあげることでセ …

no image

MonthCalendarの表示がxpとvistaでサイズが異なる

visual studio 2005のwindowsアプリケーションを作成する場合に使うコントロールの一つにMonthCalendarというのがある。これをフォーム内に配置して表示確認を行ったところ、 …

no image

三井住友VISAカードの審査期間(Amazonマスターカード)

今メインで使っているクレジットカードのポイントがあまり買い物で入らないので、Amazonマスターカードに変更すべく申し込みをしてみた。9月下旬に申し込みをして、10月16日に結果が出た。約3週間も結果 …

no image

LAMYのサファリとアルスターの違い

万年筆での話。単純にボディの材質がプラスチックからアルミになっただけかと思いきや,キャップの性能が違うということに気付いた。アルスターの方がキャップをはめたときの密封の性能が良いのだ。サファリならしば …