忍者ブログ
ちょっとは人のためになる事をしないとインターネットコミュニティーの皆様に申し訳がないかと思いながら、自分の備忘録ていどでしかなく、実際の所たいした情報も提供できないでいるブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

unrecognized selector sent to instance

Terminating app due to uncaught exception

XCode において上記エラーのように、セレクタがなくて例外が発生した場合、デバッガが run loopで停止して原因箇所が分かりにくい。

解決方法1
gdbのコマンドラインから

b __raiseError
 

または、Xcodeの、実行/ブレークポイントを管理/シンボリックブレークポイントを追加で
__raiseError
を追加

例外が発生する前にブレークする

解決方法2
例外が発生してしまった後、どこで起きたかを探る

デバッガの出力

2008-12-24 11:26:04.089 hogehoge[30592:20b] Stack: (

    2487701771,

    2475978299,

    2487730954,

    2487724300,

    2487724498,

    17384,

    23290,

    22894,

    23740,

    38791,

    11319,

    816379725,

    816409420,

    816216335,

    816148471,

    816144856,

    827735530,

    827745292,

    2487203317,

    2487205080,

    827737600,

    827737797,

    816114840,

    816160916,

    9636,

    9490

)


この表示は例外で飛ぶ前のスタックフレーム(プログラムカウンタ)、10進数なので
上から順にみて数値がお大きく変わるあたりに注目。ユーザーコードとライブラリでそこそこ分離した場所にロードされるので、どこからがユーザーコードなのか大体の判断がつく。この場合は6番目の17384に注目。このアドレスのソースコードを出してみる。特定アドレスのリストを出すには list に * 付き引数。

(gdb) list *17384

普通はこれでばっちり原因箇所が出るはずだ。
ソースが出ない(ライブラリ内だったり)する場合は他のアドレスを試せばok

 

PR


忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[02/07 @naoshi65536]
[02/07 忍]
[09/18 とおりすがり]
[06/26 ilmare]
[03/16 とおりすがり]
最新TB
プロフィール
HN:
naoshi
性別:
男性
職業:
ソフトウェア技術者
趣味:
料理
自己紹介:
@naoshi65536 で連絡がつくはずです。
バーコード
ブログ内検索
カウンター
アクセス解析
FX NEWS

-外国為替-