7

ネイティブ C++ で Visual Studio 2010 を使用する。autoexp.dat を編集するとき、デバッグ ビジュアライザーのプレビューでメソッド呼び出しの結果を使用できますか?

たとえば、私のクラスが Person の場合、次のようにするにはどうすればよいですか。

MyNamespace::Person{
  preview(
    #("FirstName=", $e->GetFirstName())
  )
}

(プライベート メンバー変数データを取得しない理由を尋ねるかもしれません。それは、GetFirstName() がサード パーティのライブラリ メソッド呼び出しに委任され、データ メンバーにアクセスできないためです。別の理由として、メソッドが実行される可能性があります若干の計算。)

4

2 に答える 2

1

いいえ、Visual Studio デバッガーは仮想メモリの直接読み取りのみをサポートしています。e->GetFirstName() をサポートするには、GetFirstName() 関数をイントロスペクションする必要があり、GetFirstName() が非自明または仮想である場合、これは非常に複雑になる可能性があります (さらに悪いことに、GetFirstName() に副作用またはクラッシュが発生する可能性があります)。autoexp.dat を変更しても、この問題は回避できません。

本当にこの機能を取得したい場合は、std::string *_firstName のような新しいデバッグ専用メンバー関数を追加し、Person の作成時に GetFirstName() を指すようにしてから、autoexp.dat を逆参照して、この変数を表示することができます。 .

于 2011-06-15T22:02:23.707 に答える