6

Mac で Xcode 4.5 を iOS シミュレーターと共に使用して、iPhone アプリを作成しています。デバッガーでブレークポイントに到達すると、「自動」を使用して変数を調べます。問題は、オブジェクトが最初はすべて折りたたまれていることです。その値を確認するには、それぞれを展開する必要があります。それはいいのですが、退屈で読みにくいです。デバッガーでのデータの表示方法をカスタマイズする方法はありますか?

私はLLDBチュートリアルを見て、Quinn Taylorの投稿で「カスタム要約文字列」を見ましたが、理解できません。彼は古いバージョンの xcode を使用していたに違いありません。

基本的に、私は次のようなオブジェクトを持っています

クラス Vec3 { public: float x,y,z; };

デバッグウィンドウに表示されます

 pos (Vec3)

そして私が見たいのは

 pos = (Vec3) (x=45.2, y=10.7, z=2.0)

変数を展開する必要はありません。どうすればそれができるか知っている人はいますか?

4

2 に答える 2

7

これを xcode 4.5.2 で動作させることができました。要約すると、これらは手順です。

  1. テキスト エディターを使用して ~/.lldbinit を開くか作成し、次の行を追加します。

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}"
    
  2. xcodeを再起動します。ブレークポイントに到達すると、Vec3 は次のように表示されます。

    pos (Vec3) x=1, y=3.125, z=9.5
    

http://lldb.llvm.org/varformats.htmlで説明されているように、.lldbinit で他の多くのことを実行できます。

例えば

type summary add Vec3 --inline-children --omit-names

要約文字列を自動生成し、

type summary add --inline-children -x "Vec[:alnum:]*"

「Vec」で始まるすべてのタイプの要約文字列を自動生成します。

于 2012-12-31T18:52:13.750 に答える
2

Vec3 があなたのクラス (またはサブクラス化できるもの) である場合、そのdescription. po posこれにより、コンソールで発言したときに表示される内容をフォーマットできます。

より洗練されたものにするには、次のページを参照してください。

http://lldb.llvm.org/varformats.html

あなたは言うことができます

type summary add --summary-string

このタイプの変数をどのように表示するかを説明する文字列が続きます。

本当に核心に取り掛かりたい場合は、独自のフォーマッターを作成できます。デバッグと LLDB に関する 2 つの WWDC 2012 ビデオでの良い議論。ただし、それを行うには Python スクリプトを作成する必要があるため、"noob" ソリューションの詳細を示しました。

于 2012-12-18T04:51:54.237 に答える