Feb 182012
 

XCodeでNSLogの代わりにブレークポイント(Breakpoints)を使う時の簡単なまとめ。Log messageを出す時には@exp@をどう使うか。Debugger Commandではgdbのコマンドを利用する。

コンソール出力

ブレークポイントのヒット回数を利用する

ブレークポイント設定をしたプログラムの書かれた行が何回呼び出されたか出力する。(例えば、以下ではTableCellの生成が何回呼ばれたかを調べている)

※OptionsのAutomatically continue after evaluating actionのチェックをONにするとブレークポイントに差し掛かっても出力をこなしながら、そのまま続行させることができる。

@exp@を利用する

以下ではTableCellに利用する文字列の中身を調べている。戻り値には型を付ける事が必要。

@(NSpoint)[obj location]@

@(bool)[str isEqualToString:@”xcode”]@

@(const char*)[obj title]@

@(float)[num floatValue]@

gdbコマンドの一部

ブレークポイントを設定するコマンド(break)

main.mの10行目で止めたい。

break main.m:10

DataManagerのinitWithTitle:メソッドで止めたい

break -[DataManager initWithTitle:]

変数が変化するとプログラムが停止するコマンド(watch)

1. title変数が変化したら止めたい

watch title

2. objのprop変数をデバッガ出力表示したい

p [obj prop];

3. selfのtimestampオブジェクトをデバッガ出力表示したい(オブジェクトである点に注意)

po [self timestamp]

条件

「一行目だったら、画面が開いていたら、アニメーションしてたら等」変数の条件にあわせたブレークポイントの設定方法。慣れると便利なブレークポイントでは、ドットシンタックスは使えない点、戻り値の型を明示的に与える点は注意が必要。

indexPath.row==50ではなく、(NSUInteger)[indexPath row]==50

以下のようにNSLogでソースを汚す必要も無い。

if(indexPath.row==50){
NSLog(@"%.2f, %.2f", point.x, point.y);
}

参考サイト

http://theocacao.com/downloads/DebuggingWithXcode.pdf

http://stackoverflow.com/questions/4797128/xcode-debugger-value-of-expression

http://cocoawithlove.com/2008/10/debugging-tips-for-objective-c.html

コメント

個のコメント

Powered by Facebook Comments

 Posted by at 02:39

Sorry, the comment form is closed at this time.