web-dev-qa-db-ja.com

Xcodeデバッガ:アセンブラのみが表示されるのはなぜですか?

XcodeでのCocoa開発から始めて、Hello Worldの例を示します。セクション「 ランタイムデバッグ 」のステップ6までです。

デバッガーツールバーの[ステップオーバー]ボタンを使用して、コードをステップ実行します。コードの各行が実行されると、プログラムの状態を調べることができます。変数の値は、最後のステップで値が変更されたことを示すために、赤で描画される場合があります。示された行を実行する前にデバッガーが一時停止することに注意してください。一時停止するたびに、ブレークポイントを追加するか、[デバッグ]> [再起動]を選択してアプリケーションを終了し、新しいデバッグセッションを開始できます。

ここ1時間以上、髪の毛を抜いてきたのは、このデバッガがアセンブリコードだけを表示するという事実です。ソースコードファイルを手動で選択できますが、[Step over]をクリックするとすぐにアセンブラービューに戻ります。私の人生では、アセンブラーをオフにする方法を理解して、ソースコードを表示することはできません。

48
Breton

この記事は100年前のものですが、最近のXcodeバージョン(Xcode 3ではなく)でこの問題に対処する方法を誰かが疑問に思っている場合のために、というラベルの付いた適切な設定を見つけます。 /常に逆アセンブリを表示Debug> Debug Workflowの下でXcode 6以降。オプションが[〜#〜] not [〜#〜]チェックされていることを確認します。

Xcode 5では、このオプションはデバッグ時に分解を表示Debug> Debug Workflowと表示されていました。 [デバッグ時に逆アセンブリを表示]がオフになっていることを確認します。

Xcode 4に戻ると、デバッグ時の逆アセンブリの表示設定がProduct> Debug Workflowで見つかりました。再度、オプションがチェックされていないままであることを確認してください。

これも私を狂わせていました。

注:上記の情報は、Xcode 10以降でも有効です。 Xcodeの新しいバージョンがリリースされたので、この回答に更新を適用しました。幸い、オプションはXcode 6(これまでのところ)以降変更されていません。

128
Mike Fahy

確認する必要があるのは、他に2つあります。

  1. 自分の関数/メソッドの1つを見ていること。調べているスタックフレームがフレームワークの1つからの関数またはメソッドである場合、Xcodeの構成方法に関係なく、アセンブリが表示されます。
  2. デバッグビルドを実行していること。デバッグシンボルを(リリースビルドの場合と同様に)取り除くと、自分のコードでも、何があってもアセンブリが表示されます。
11
Peter Hosey

私は実際に投稿する前にこれを理解しましたが、スタックオーバーフローを検索してもこれに対する答えを見つけることができなかったため、他の潜在的な将来の頭痛の種を保存したいと思いました(後で忘れる場合も同様です)が、それは見つかりました 私は一人じゃない。

実行メニューから、「デバッガの表示」>「ソースのみ」または「デバッガの表示」>「ソースと逆アセンブリ」を選択します

2
Breton