0

私自身の開発 (Mac、iOS) でよくあるデバッグ エラーの 1 つは、EXC_BAD_ACCESS です。その一般性にもかかわらず、その起源と正確な意味は謎のままです。Google はエラーの多くの発生をリストしていますが、私が見つけた唯一の説明は非公式で不完全です.

この例外 (それが適切な用語である場合) は、コードが読み取りおよび/または書き込み権限を持たないアドレス (たとえば、null アドレス、または外部のアドレス) にアクセスしようとしたことを意味します。プロセスのアドレス空間。しかし、これは仮想メモリと保護されたメモリ システムに関する私の以前の経験に基づいた直感的な解釈です。私は EXC_BAD_ACCESS がどこにも文書化されているのを見たことがありません。実際、「誰」がこの例外を私に送っているのかわからない - CPU、Mac OS、UNIX、ランタイム、デバッガー?どのクラスのドキュメントを参照するか)。たとえば、例外とともにリストされている「コード」が何を意味するのか知りたいです。または別の例: 同様の例外の他のクラス (おそらく "EXC_" もタグ付けされています)

EXC_BAD_ACCESS、そのコード、および一般的なセマンティクスの説明は、信頼できる情報源からどこで見つけることができますか? 実際に例外を検出してスローしているのは誰?

4

1 に答える 1

2

EXC_BAD_ACCESS について私が見つけた唯一の公式ドキュメントは、Finding EXC_BAD_ACCESS bugs in a Cocoa projectというテクニカル Q&Aです。それは日付が付けられており、あなたがすでに知っていることを確認するだけです:

この種の問題は通常、オブジェクトを過剰に解放した結果です。失敗は間違いを犯した後に発生する傾向があるため、非常に混乱する可能性があります。クラッシュは、プログラムがフレームワーク コードの奥深くにある場合にも発生する可能性があり、多くの場合、独自のコードがスタックに表示されません。

確かに、それは非常に混乱する可能性があります。少なくともAppleはそれを認めています。:)

于 2014-01-03T18:57:11.333 に答える