[iOS]EXC_BAD_ACCESS、SIGABRTの対処

プログラムはシグナルを受信しました:“SIGABRT”。

プログラムはシグナルを受信しました:“EXC_BAD_ACCESS”。

 

xcode でプログラムをすれば必ず誰もが目にし、次に苦悩するコンソールのメッセージ。

これを少しは手助けしてくれる方法を紹介する。

 


落ちた場所を確認

 

2つある。後者がよりいいかもしれない。

 

①メニュー実行>Objective-C 例外時に停止

停止した後デバッガの左上表から、あやしいものをクリック

 

②メニュープロジェクト>アクティブな実行可能ファイル"?????"を編集>引数タブ

環境に設定される変数に追加>NSZombieEnabled:YES

 

 


落ちた段階までの詳細ログを表示

 

メニュープロジェクト>アクティブな実行可能ファイル"?????"を編集>引数タブで追加

NSDebugEnabled:YES

MallocStackLogging:YES

MallocStackLoggingNoCompact:YES

 

コンソールに出るメッセージが若干変化する。このとき、次のコマンド等が使える。

ただしこれらは実機のデバッグでは使えない。

info stack

info malloc-history 0x??????(エラーのアドレス) ※ハイフン注意!

shell malloc_history ????PID 0x??????(エラーのアドレス) ※アンダーバー注意!

 

 


Guard Malloc を有効にする

 

メニュー実行>Guard Malloc を有効にする

詳しくはこちら。
 
deathcube.blog36.fc2.com/blog-entry-20.html
 
 
 
まぁ、ぶっちゃけどれを使ったところで Objective-C 初心者には茨の道である・・・。
Posted under 未分類 by akira on 土曜日 26 2月 2011 at 12:17 PM

ベースSDKが別のものの対処

サイトなどから誰かが作成したプロジェクトを勉強用にDL、コンパイルする時に起こりうる問題の解決法。

 

1.error: There is no SDK with the name or path ‘iphones3.1.2′

現行のSDKは4.2。拾ってきたサンプルは3.1であった。このため、ライブラリがないと怒られる。

対処法は、Xcodeメニューの「プロジェクト→プロジェクト設定を編集→ビルド→ベースSDK」を変更する。

 

 

 

iOS3.1.2(見つかりません)を存在するiOSに変更する。(自分の場合4.2)。

 

2.Code sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychain

変更した直後ビルド実行するとこのエラーが表示される。

プロジェクトを一旦閉じて開きなおせばエラーはなくなる。 

 

※2に関しては、本来は実機テストを行うときなど、ライセンス登録が上手くいってない場合に出るものらしい。

※今回のはあくまでシミュレータテストでのお話。

Posted under 未分類 by akira on 日曜日 30 1月 2011 at 5:37 PM