2011-01-25 11 views
4

GDBコマンドを使用してGDBコンソールに情報を記録することができるようになった(別の非常に有用なpostのおかげで)またはシミュレータ。これはNSLogと似ていますが、コンソールが追いつくのを待つ必要がなく、迷惑なタイムスタンプがなく、実行時にXCodeブレークポイントビューでオン/オフを切り替えることができます。デバイス上でデバッグするときにXCode/GDBが自動的にブレークポイントを停止する

非常にうれしく、メッセージと変数を一緒に記録するのに最適な方法を考え出しました。最大限の汎用性を実現するには、GDBコマンドpo [NSString stringWithFormat: @"Your message: %d %@",variable,[[object expression] description]]を使用します。

すべてが素晴らしいシミュレータで機能しました。最終的にデバイスのデバッグに慣れたところで、メッセージは正常に表示されていましたが、ブレークポイントビューのチェックボックスをオンにして自動継続するように設定したにもかかわらず、GDBはすべてのブレークポイントを停止していました。

各ブレークポイントに「続行」コマンドを追加しようとしましたが、それは機能しましたが、GDBはまた、すべてのブレークポイントヒットについての情報を吐き出して、すべての行の後に「続行」を伝え始めました。

私の質問:

  1. これはあなたのために発生しますか?
  2. 自動継続機能もデバイス上で動作するように何かを変更することはできますか
  3. GDBにはあまり冗長ではなく、私が出力したものだけを出力するように指示できますか?

助けてください!

デビッド

+0

同じ問題があります。あなたが解決策を見つけたか見つけたら、私に知らせてください。 – Cliff

答えて

1

私は同じ動作をしました。 XCodeが目的の行にブレークポイントを複製していたことが判明しました。おそらく、左クリックが、時折、無効にするのではなく隠れたブレークポイントを追加するバグがありますか?

  1. 重複のブレークポイント手動またはで、検索ボックスにクラス名を入力して放置
  2. ルックのナビゲータフレームの「ブレークポイントナビゲーター」タブを選択します。

    ソリューションは、このでしたナビゲータの下部にあります。(リストの複数のプロジェクトセクションには同じクラスのブレークポイントが含まれている可能性があることに注意してください)

  3. 1つを右クリックし、[編集]を選択して継続かどうかを判断します。
  4. 不要なブレークポイントを右クリックして削除する
0

デビッド、

あなたを理解することがありますいくつかの有用なコンソールコマンドがあります。

info b (lists all breakpoints) 
ena (enables all breakpoints) 
dis (disables all breakpoints) 
ena X (enable breakpoint number X) 
dis X (disable breakpoint number X) 

GDBはまた、条件付きブレークポイントをサポートしています。

cond X [condition] 

そして、ブレークポイントにヒットしたときに自動的に実行するコマンド:

command X 

アーロン

+0

与えられたブレークポイントで継続可能な "var"をログに記録してcontinueコマンドを実行するには、gdbの構文は何でしょうか? – Cliff

+0

p var(そして新しい行)cont – xyzzycoder

+0

申し訳ありませんが、私はすでにvarsを記録する方法を知っています。私は実際にgdb自動継続構文を探していました。 – Cliff

0

別の非常に便利なオプションがAでwatchpoint - 指定された式が変更された場合にのみ中断します。

+0

現在のXCodeでは、ウォッチポイントと条件は非常に信頼性がありません。私はまた、自動継続の問題をヒットしたり、逃したりしました。 – Cliff

関連する問題