[解決済み] Xcode 4.2デバッグでスタックコールが記号化されない
2022-05-15 22:56:57
質問
iOS 5 シミュレータ/デバイスで Xcode 4.2 のデバッグに問題があります。次のコードは、予想通りクラッシュします。
NSArray *arr=[NSArray array];
[arr objectAtIndex:100];
iOS 4では、16進数の有用なスタックトレースが得られます。しかし、iOS 5 では、それは単に私を与えます。
*** First throw call stack:
(0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805)
ありがとうございます。
どのように解決するのですか?
何をやっても解決しませんでした (両方のコンパイラー、両方のデバッガーなどを試しました)。 iOS 5 アップデートのために XCode をアップグレードした後、どのスタック トレースも機能しないようでした。
しかし、私は効果的な回避策を見つけました。自分自身の例外ハンドラーを作成することです (これは他の理由でも役に立ちます)。まず、エラーを処理し、それをコンソールに出力する関数を作成します (同様に、それを使って行いたいことは何でも行います)。
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
// Internal error reporting
}
次に、アプリのデリゲートに例外ハンドラを追加します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
// Normal launch stuff
}
それだ!
これがうまくいかない場合、次のような方法があります。 2つの理由しかありません。 :
-
何かがあなたの
NSSetUncaughtExceptionHandler
の呼び出しを上書きしています (アプリ全体に対してハンドラはひとつだけです)。例えば、サードパーティライブラリの中には、独自の uncaughtExceptionHandler を設定するものがあります。そこで、このハンドラをdidFinishLaunchingWithOptions
関数の最後に設定する(あるいはサードパーティライブラリを選択的に無効化する)。あるいは、より良い方法は、シンボリックブレークポイントをNSSetUncaughtExceptionHandler
にシンボルブレークポイントを設定し、誰がそれを呼び出しているのかを素早く確認することができます。あなたがしたいことは、別のものを追加するよりも、現在のものを修正することです。 -
実際に例外に遭遇していない(例.
EXC_BAD_ACCESS
は ではない は例外であり、以下の @Erik B のコメントに謝意を表します)
関連
-
iOS classic error Undefined symbols for architecture XXX:
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] UITableView - トップにスクロールする
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み]どのようにXcodeのクラッシュログをシンボリックにする?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] 文字列の長さを取得する
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] Cocoapods警告 - CocoaPodsがプロジェクトの基本構成を設定しなかった理由は、プロジェクトに既にカスタム構成が設定されているためです。