2011-11-09 10 views
14

今日、xCode 4の新機能についてWWDCビデオを見てきました。彼らは、ブレークポイントでログメッセージアクションを使用し、「評価アクション後に自動的に続行」を使用する代わりに変数の値を出力できるようにすることをお勧めします常にNSLogs。私はuserDocumentsURLの値を表示するログメッセージのアクションを記述しますどのようにxcodeでブレークポイントのログメッセージアクションを作成する方法は?

NSLog(@"URL is : %@", userDocumentsURL); 

は、私はそのような何かを持って言うことができますか? NSLogの代わりに上記の方法を使用するのは本当に良い考えですか?

答えて

25

ブレークポイントの[ログメッセージ]アクションを作成します。以下のようなものが含まログメッセージの場合:それは間違いなく明らかに簡単だとして、私は、ロギング用のブレークポイントのアクションを使用して好む

po [NSString stringWithFormat:@"URL is: %@", userDocumentsURL] 

URL is @(char*) [[userDocumentsURL description] UTF8String]@ 

を別の方法としては次のようにブレークポイント「デバッガコマンド」アクションを作成することができますNSLogを削除するよりも多くのブレークポイントを取り除く必要があります。このような方法でブレークポイントを使用することには、直接的なNSLogよりもかなり遅い(デバッグ中)という欠点があります。

+4

覚えやすいと一緒に暮らすことができる場合:デバッガが必要とするほど愚かであるがchar * cast、b:それは半分の時間で動作しませんし、c:リンゴのドキュメントでは、char *とdが必要であることを明確にしていません:デバッグに役立つ変数が存在しない場合、 JavaのEclipseブレークポイントと比べても、この機能を持たないEclipseブレークポイントと比べると、はるかに劣るはずですが、印刷物を条件に入れてハックすることができます。これは日食の迷惑ですが、それでも印刷は特別な鋳造を必要とせず、エラーについては教えてくれるので、はるかに簡単です – Rhubarb

-3

編集中のブレークポイント機能は、便利でおそらく現代的ではあるがソース管理にコミットしないので、開発者のチームには適用できません。このため、NSLogなどのコードベースのロギングに固執するために、ソース管理下のチームで作業していると言います。

+4

ブレークポイントエディタで正しい共有オプションを選択したとします。私は自分自身(ソロデベロッパー)を使っていませんが、WWDCの話は、共有はソース管理と統合されていることを示しています。 – mbm29414

+12

私の意見では、他のチームメンバーのすべてのデバッグ出力を読むのはプロです。コミットする前に、NSLog(またはNSLogの前にある)を消去する必要はありません。私は1/10コミットの1つが「ロギングの削除」、「NSLogの追加」、「NSLogをより冗長に変更しました」などのロギングに関連するチームで働いていました。 –

+0

@MatthiasBauchと同様に、これも便利かもしれないとコメントしました。一方、アプリを再起動したくないが、デバッガにログを表示したいという用途がありますので、これが唯一の可能性です。 –

19

NSLogを使用した同様のソリューションです。他のソリューションよりも文字数が少なくなる可能性があります。

debugger command using NSlog

ただし、このようvoidを追加しない限り:あなたはログをプリントアウト迷惑 "ゼロ" を取得します

po (void)NSLog(@"the person name is: %@", p.name) 

。例えば:

(lldb) po NSLog(@"foo") 
nil 
2013-06-19 14:42:59.025 TheMove[95864:c07] foo 

(lldb) po (void)NSLog(@"foo") 
2013-06-19 14:43:10.758 TheMove[95864:c07] foo 

あなたがnil(私はできる)、それが入力する高速ですし、私はなぜ私は知っていたいだけpo

関連する問題