Xcode4.3.2の使用。私はこれを含む多くの異なる同様の問題を見ました
no-call-stack-on-exception-in-xcode-4
ただし、デバッガー(gdbまたはlldb)を取得して、例外の場所を示す適切なスタックトレースを取得し、例外が何であるかを出力することはできません。
シンボリック例外objc_exception_throw
または「すべての例外」例外ブレークポイントのいずれかを設定すると、lldbは適切なスタックトレースを提供しませんが、次のように表示されます。
- スレッド#1:tid = 0x1c03、0x34455238 libobjc.A.dylib
objc_exception_throw, stop reason = breakpoint 1.1 frame #0: 0x34455238 libobjc.A.dylib
objc_exception_throwフレーム#1:0x323ff788 CoreFoundation` + [NSException raise:format:arguments:] + 100
これがbt
、グラフィカルなブレークポイント/デバッガービューでの全倍率または全倍率でのすべてです。
この時点で続行を数回押すと、最終的には例外/アサーションが表示されます。たとえば、
***キャッチされなかった例外'NSInternalInconsistencyException'が原因でアプリを終了しています、理由:'_endUndoGroupRemovingIfEmpty :: NSUndoManager 0x2b7610が無効な状態であり、endUndoGroupingが一致せずに呼び出されました
しかし、それがどこにあるのかわかりません。
gdbは、同じブレークポイントを使用して、停止して現在の場所を表示しますが、例外テキストを出力しません。数回続行を押すと、それは実行されますが、バックトレースのコンテキストが失われます。
例外テキストを印刷する方法を知りたいので、何回か続けて場所を失うことなく、なぜ停止したのかを知ることができます。また、gdbの場合と同様に、例外の時点でlldbで停止させたいと思います。