2011-01-26 38 views
15

Xcodeで変数の変更やメモリの変更を追跡する方法はありますか?私はVisual Studioのデータブレークポイントのような機能を探しています。Xcodeの変数またはメモリの変更を追跡していますか?

私のオブジェクトのビューフレームがどこで変更されているか知りたい。私はメンバ変数にブレークポイントを設定して実行したいと思います。それから、どこが変わったのか判断することができました。

答えて

19

Xcodeはデバッグ機能を実装するためにgdb(またはlldbですが、それは別の話です)を使用しています。 gdbには、ハードウェアウォッチポイントを設定する機能があり、Xcodeも同様に機能します。

Thisは、メモリエラーの一般的なデバッグに役立つページです。 Xcodeのデバッグコンソールウィンドウは実際にはgdbシェルです。あなたが好きなようにコマンドを入力することができます。いつも役立つQuinn Taylorは、this関連する投稿でこれを行う方法を説明しています。

gdbと直接対話しないようにするには、Xcodeのデバッグウィンドウで変数を右クリックし、[変数の監視]を選択します。変数の値が変更されると、Xcodeは警告を表示します。

+0

詳細な回答をお待ちしております!私が試してみます! – SeniorLee

+0

ウォッチウィンドウの変数を右クリックすることは決して考えられませんでした!今実際にそれがヒットすることを望むために);変数値を表示するだけで十分なropeyと思われます - ローカル変数が有効範​​囲外であることを伝えることは本当に役に立たないです。 –

+0

@LaceySnr:私の答えをチェックしてください。私はXcodeの時計で同じ問題があります。だから私はgdbウォッチポイントを使用しています。 –

1

はい。

[実行]メニューには、gdbのビジュアルフロントエンドを提供する「デバッガ」があります。

また、[ビルドと実行]ボタンの隣にブレークポイントボタンがあります。 [実行]> [ブレークポイントの管理]で、ブレークポイントをクリックしてブレークポイントを管理できます。

+1

私は、これは彼が探しているのは何であるかわかりません。あなたは標準的なブレークポイントについて話していますが、メモリ内のある場所に格納されているデータが変更されたときに破ることについて話しています。ブレークポイントよりもウォッチポイントに似ています。 –

+0

ええ、そういう "トリガー"があるかどうかはわかりません。しかし、デバッガと標準ブレークポイントの使用により、データの変化を見ることができます。おそらく、Visual Studioほど滑らかではありません。 – aqua

9

hardware watchpointsを使用できます。


あなたは(GDBプロンプトでタイプp &my_var)を追跡する変数のアドレスを取得する必要があります。

0x12345678のようなものが印刷されます。

  • gdbの場合:watch *(int *)0x12345678です。 lldbで

  • watch set expression (int *)0x12345678(またはw s e (int *)0x12345678

これはあなたの変数はintある前提としています。このアドレスにハードウェアウォッチポイントが作成されます。


は、この情報がお役に立てば幸いです。

関連する問題