2013-04-05 11 views
9

私は大きなiosプロジェクトでコードのデバッグに本当に苦労しています。誰もがブロックを置いたり、キューをどこにでも派遣したりしているようだ。Xcodeのブロックを使って効果的にデバッグするには

コードの断片をデバッグするように頼まれたとき、私は実際にそれを実行して、物事がどのように変化しているかを見て、実際に何が変数で起こっているのかを見たいと思っています。私は実際には2つの理由のために入れていたすべてのブロックで簡単にそれを行うことはできません。私はそのブロックで停止するように各小さなブロック内でブレークポイントを配置する必要があり

  1. ブロック内では、ブロックなしの変数は使用可能な方法で表示されず、コンソールにpoコマンドで簡単にダンプできません。

ブロックが蔓延しているコードをステップスルー/評価する方が簡単ですか?または私はここに何かを逃していますか?

答えて

3

実行中のアプリケーションを停止せずに自動的にコンソールダンプを実行してブレークポイントを使用していますか?

非常に優れていますが、実際に使用できるチュートリアルabout intermediate debuggingがあります。

ハッピーコーディング!

+1

"自動的にコンソールのダンプを伴うブレークポイント"の意味がわかりません。 また、このチュートリアルは私にとって非常に便利でした。 – HalR

+0

いいえ、ブレークポイント(サウンドメッセージでさえ)に対して多くの実用的なアクションを設定できます。これらのうちの1つは、NSLogと同様の構文を持つログメッセージです。そしてそれは自動的に対応するログメッセージを印刷します。 – ingaham

1

なぜブロックに必要な変数を出力するのにNSLog()を使用しないのですか?

+0

私のコードにNSLog()を追加することができます。これは私が物事を見た方法の1つですが、コードベースを変更しています。誤って他の人のコードに何かを追加する可能性があります。私は他の選択肢も望んでいた。 – HalR

1

あなたはこれを使用して、コンソールでオブジェクトをプリントアウトすることができます

例:

po object.name 
po object.age 

もう一つの方法:コードにブレークポイントを置きます。その時点で実行を停止したら、その上にカーソルを置きます。より明確な詳細については

は、この質問のために私の答えを見て:How to inspect elements from NSArray and NSDictionary in xcode?

1

あなたは正しいですが、それはデバッグブロックに少し面倒です。私は "自動ダンプブレークポイント"を使用してみましたが、それは維持することが恐ろしいことが判明しました...

私は基本的にNSLogを使用して終了しました。しかし、NSLog()の問題は、リリースビルドにすべてのログを記録したくないということです。私はそれは本当に素晴らしいことだと思う

MWLogging

:だから私は次のようなツールを使用することをお勧めします。あなたはそれについて読んで、このブログの記事では、一般的にログインすることができます。

iOS Development: You're Doing It Wrong

それは読んで本当に価値があります。

+0

またはCocoaLumberjackを使用しています:) – AndrewShmig

関連する問題