调试过UE3代码的同学都知道 UE3中有大量自定义结构体如FString、TArray、TMap等,这些数据类型默认的VS是无法直接显示的,当然你可以每次查看FString的时候都在Watch里强制转换

(char*)Allocation.Data=。=

这里使用VS12特有的.natvis文件用来显示自定义的调试信息,VS10以前的autoexp文件怎么修改google一下一大堆 就不多写了

在($VSINSTALLDIR)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers下建立UE3.navtis文件,填入如下内容

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  
  <Type Name="FString">
    <DisplayString>{AllocatorInstance.Data,su}</DisplayString>
    <StringView>AllocatorInstance.Data,su</StringView>
  </Type>

  <Type Name="FName">
    <DisplayString>{((FNameEntry**)Names.AllocatorInstance.Data)[Index]->AnsiName,s}</DisplayString>
    <StringView>((FNameEntry**)Names.AllocatorInstance.Data)[Index]->AnsiName,s</StringView>
  </Type>

  <Type Name="TArray<*,*>">
    <DisplayString>{AllocatorInstance.Data}</DisplayString>
    <Expand>
      <Item Name="[size]">ArrayNum</Item>
      <ArrayItems>
        <Size>ArrayNum</Size>
        <ValuePointer>($T1*)AllocatorInstance.Data</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>
  
  <Type Name="TSet<*,*,*>">
    <DisplayString>{Elements.Data.ArrayNum}</DisplayString>
    <Expand>
      <Item Name="[size]">Elements.Data.ArrayNum</Item>
      <ArrayItems>
        <Size>Elements.Data.ArrayNum</Size>
        <ValuePointer>((FElement*)Elements.Data.AllocatorInstance.Data)</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>
  
  <Type Name="TMap<*,*,*,*>">
    <DisplayString>{Pairs.Elements.Data.ArrayNum}</DisplayString>
    <Expand>
        <Item Name="Set">Pairs</Item>
    </Expand>
  </Type>

</AutoVisualizer>

 

 注意把Xml里的< 和 >换成 &lt; 和 &gt;