2012-03-01 29 views
11

私は自分のiPadアプリを使っています。xcodeのメソッド呼び出しスタックを表示または表示する方法は?

コードを実行している間は、テーブルビューで1つの方法があります。

我々は何回かは、このメソッドを呼び出すことができますがあります

`cellForRowAtIndexPath:` 

知っています。インデックスパスでの行のセルを呼び出しているメソッドからの

私はちょうどメソッドのコールスタックを見たいので、私は複雑なコーディングを持っていながら、

scrolling table view cells. 

Or table view reload data. 

よう

...

私はNSLogsとブレークポイントを使用しましたが、まだ得られませんでした。

+3

http://stackoverflow.com/questions/220159/how-do-you-print -out-a-stack-trace-to-the-console-log-in-cocoa – ivanzoid

+0

いつでもいつでもいつでもインデックスのcellfor行にアクセスしたい場合は –

+0

これを参照してください:http://stackoverflow.com/questions/8891382/print-callstack-at-runtime-xcode – Nilesh

答えて

15

あなたがブレークポイントにヒットし、ナビゲータ領域(ウィンドウの左側)にデバッグナビゲータを選択します。

debug navigator

デバッグナビゲーターは、あなたの内の各スレッドのスタックトレースを示していアプリ。基本的にgdbのbacktraceコマンドと同じ情報が表示されますが、返信アドレスは省略されています(通常はそれほど役に立ちません)。ナビゲータの下部にあるコントロールを使用して、すべてのスレッドを表示または非表示にし、表示されているスタックフレームの数を変更します。上記の画像の範囲の中央にスライダを設定し、デバッグナビゲータではスタックフレーム2-18を省略しています。これはすべて、あるフレームワークメソッドから別のフレームワークメソッドへの呼び出しです。つまり、私のものではありません。

Xcode 4は、デバッグ時に自動的にデバッグナビゲータを表示するように設定する必要がありますが、そうでない場合は、[Xcode] - > [ビヘイビア] - > [ビヘイビアの編集...]実行リストから項目を一時停止し、に設定します。ナビゲーターデバッグナビゲーターを表示します。

+2

+1の画像です。 (10char) – phlebotinum

+0

確かに+1画像です。 –

+0

省略されたスタックフレームの表示方法を教えてください。それはなぜそれらを省略していますか? – jameshfisher

9

ブレークポイント(またはポーズアプリケーション)を設定し、gdbデバッガに「backtrace」と書き込みます。

あなたはスタック表示されるはずです。

(gdb) backtrace 
#0 0x9022f7fe in mach_msg_trap() 
#1 0x9022ecdc in mach_msg() 
#2 0x022a310a in __CFRunLoopServiceMachPort() 
#3 0x02206550 in __CFRunLoopRun() 
#4 0x02205d84 in CFRunLoopRunSpecific() 
#5 0x02205c9b in CFRunLoopRunInMode() 
#6 0x024617d8 in GSEventRunModal() 
#7 0x0246188a in GSEventRun() 
#8 0x00c0ca16 in UIApplicationMain() 
#9 0x0000270d in main (argc=1, argv=0xbfeff550) at /Users/.........m:14 
+12

'bt'は' backtrace'の便利なショートカットです。 – Caleb

+4

'bt'もLLDBで動作します:) –

7

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathのエントリにブレークポイントを設定してみてください

そして、右のブレークポイントをクリックしてから「ログスタックトレースと自動継続」を選択「組み込みのブレークポイント」メニュー項目。

これは、この機能が入力されるたびに自動的にスタックトレースを記録し、gdbコンソールを実際に使用することなく、処理を続行します。

これはXcode 3.x用です.Xcode 4では、手順が少し異なります。

  1. ブレークポイントを設定します。
  2. ブレークポイントを右クリックし、「 ブレークポイントを編集」を選択します。 (またはCommand - Optionブレークポイントをクリックしてください)
  3. "アクション"ポップアップから "デバッガコマンド"を選択してください。
  4. メッセージを "bt"(引用符なし)に設定してください。
  5. [オプション]で[評価後自動的に続行]をオンにしてください。
+0

ありがとうございました... –

+1

+1とv3とv4の違い。 – phlebotinum

16

あなたは

NSLog(@"Stack trace : %@",[NSThread callStackSymbols]); 

EDITでのNSLogでスタックトレースを印刷することができます:スウィフトコード

println("Stack trace: %@", NSThread.callStackSymbols()) 
関連する問題