5

次のように定義された型があります。

typedef unsigned short StringChecksum;

最終的には、NatVis を使用して、メモリにロードしたグローバル文字列テーブルに対応する値を表示するつもりです。

だから私はテスト用に新しいNatVisを定義しました(これは初めてです):

<?xml version="1.0" encoding="utf-8" ?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="StringChecksum">
    <DisplayString>StringChecksum {this}</DisplayString>
  </Type>
</AutoVisualizer>

レジストリで NatVis デバッグを有効にしました。.natvis ファイルがデバッガーによって読み込まれ、正常に解析されていることがわかります。

エディット コンティニュもオフにしています。

ただし、コードをデバッグして StringChecksum を調べると、違いは見られず、整数が表示されます。「StringChecksum 3433」のようなものが表示されると思っていました。

NatVis が単純な typedef から定義された型を操作することは可能ですか? 私が見た例はすべてクラスを使用しています。もしそうなら、何が間違っているのでしょうか?

4

1 に答える 1

3

答えはノーです。デバッガーは、元の型との違いを見分けることができません。

興味深いことに、列挙型や厳密に型指定された列挙型でさえ、デバッガーが実際に違いを認識できるにもかかわらず、現在 VS2012 Update 2 では機能しません。

于 2014-04-04T16:49:02.293 に答える