在Visual Studio调试器中显示Unreal的数据类型的值
转自:https://blog.csdn.net/witton/article/details/5977766
在Unreal引擎中大量使用了自定义的数据类型如:FName,FString,TArray等等,对于这些自定义的数据类型,我们无法直接查看到这些数据的值,但是我们可以编写VS中的autoexp.dat(Common7/Packages/Debugger/autoexp.dat)文件中的脚本,来达到我们需要在调试器中显示的方式。
经过研究,笔者实现了FColor,FNameEntry,FString的直接显示,但是对于FName的显示,通过调整FName的代码,也实现了其调试显示的需求。
VS2010中的autoexp.dat脚本实现了对表达式的支持,基本上可以把Unreal引擎中的所有自定义数据类型直观的显示在调试器中。
VS2010中的方法如下:
同上打开autoexp.dat文件,在[AutoExpand]下添加如下脚本:
FNameEntry=<Name,su>
;Unreal的FColor
FColor = R=<R,u> G=<G,u> B=<B,u> A=<A,u>
在[Visualizer]下添加如下脚本:然后就可以在调试中尽情查看以上自定义数据类型的值了。
; Unreal格式的数组
TArray<FString>{
children
(
#array
(
expr : ((FString*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FString*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
) stringview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FString*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
)
} TArrayNoInit<FString>{
children
(
#array
(
expr : ((FString*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FString*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
) stringview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FString*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
)
} ; Unreal格式的数组
TArray<FStringNoInit>{
children
(
#array
(
expr : ((FStringNoInit*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FStringNoInit*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
) stringview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FStringNoInit*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
)
} TArrayNoInit<FStringNoInit>{
children
(
#array
(
expr : ((FStringNoInit*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FStringNoInit*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
) stringview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : [((FStringNoInit*)($e.Data))[$i].Data,su],
size : $c.ArrayNum
),
")"
)
)
} ; Unreal格式的数组
TArray<*>{
children
(
#array
(
expr : (($T1*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : (($T1*)($c.Data))[$i],
size : $c.ArrayNum
),
")"
)
)
} ; Unreal格式的数组
TArrayNoInit<*>{
children
(
#array
(
expr : (($T1*)($c.Data))[$i],
size : $c.ArrayNum
)
) preview
(
#(
"[",
$c.ArrayNum ,
"](", #array
(
expr : (($T1*)($c.Data))[$i],
size : $c.ArrayNum
),
")"
)
)
} ; Unreal的FName
FName{
preview([((FNameEntry**)FName.Names.Data)[$c.Index]->Name,su])
stringview([((FNameEntry**)FName.Names.Data)[$c.Index]->Name])
}
; Unreal的FString
FString{
preview([$c.Data,su])
stringview([$c.Data,su])
} ; Unreal的FString
FStringNoInit{
preview([$c.Data,su])
stringview([$c.Data,su])
}
; Unreal的UObject
UObject{
preview([((FNameEntry**)FName.Names.Data)[$c.Name.Index]->Name,su])
stringview([((FNameEntry**)FName.Names.Data)[$c.Name.Index]->Name])
} ; Unreal的TMap
TMap<*,*>{
preview(#("size=",[$c.Pairs.ArrayNum,u]))
}
显示效果如下:

Tips显示方式

在Visual Studio调试器中显示Unreal的数据类型的值的更多相关文章
- 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...
- 自定义Visual Studio调试器中的对象显示方式
你有没有盯着调试器窗口中的对象,并希望你可以通过其他类型的东西来查看这些对象?我当然有!扩展项目以确定每个人的身份可能会非常快速.理想情况下,通过特定的属性值快速定位它们会很棒.对我们来说幸运的是,V ...
- C#比较两个对象是否为同一个对象。 Visual Studio调试器指南---多线程应用程序调试(一)
两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存. 1.使用object.ReferenceEquals() class Program { static void Main(strin ...
- 使用 Visual Studio 调试器附加到运行的进程
为什么调试附加进程? Visual Studio 调试器可以附加到在 Visual Studio 外运行的进程. 可以使用此附加功能执行以下操作: 调试并非在 Visual Studio 中创建的应用 ...
- 用Natvis定制C++对象在Visual Studio调试时如何显示
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Natvis定制C++对象在Visual Studio调试时如何显示.
- Visual Studio调试器指南---多线程应用程序调试(一)
线程是操作系统向其授予处理器时间的指令序列. 在操作系统中运行的每个进程都包含至少一个线程. 包含多个线程的进程称为多线程.有多个处理器.多核处理器或超线程进程的计算机可以同时运行多个线程. 使用多个 ...
- visual studio 配置属性中增加自定义宏和宏值
visual studio中有一些预先定义的宏,用于配置项目属性,如SolutionDir.我们也可以自定义类似的宏,从而在配置包含目录(include)或添加依赖项时简化配置项. 如何创建自己的宏呢 ...
- 【Asp.net入门4-02】使用Visual Studio调试器
- Visual Studio 调试系列9 调试器提示和技巧
系列目录 [已更新最新开发文章,点击查看详细] 01 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...
随机推荐
- UVa 1635 无关的元素(唯一分解定理+二项式定理)
https://vjudge.net/problem/UVA-1635 题意: 给定n个数a1,a2,...an,依次求出相邻两数之和,将得到一个新数列.重复上述操作,最后结果将变成一个数.问这个数除 ...
- XML_CPP_资料_libXml2_01
ZC: 看了一些 C/C++的XML文章,也看了一些 Qt的 QXmlQuery/QXmlSimpleReader/QXmlStreamReader/QXmlStreamWriter 的文章.总体感觉 ...
- Android之Fresco(facebook的强大Android图片加载的框架)
Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络.本地存储和本地资源中加载图片.其中的Drawees可以显示占位符,直到图片加载完成.而当图片从屏幕 ...
- 解决mysql安装报错:无法启动此程序,因为计算机丢失MSVCP120.dll
问题一: 因为装的是新系统,所以遇到mysql启动报错:无法启动此程序,因为计算机丢失MSVCP120.dll 后来参考这篇文章https://blog.csdn.net/huacode/articl ...
- 2-14-1 MySQL基础语句,查询语句
一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询.更 ...
- Leetcode 52
//N皇后的基础上改了一点class Solution { public: int totalNQueens(int n) { ; vector<); DFS(pos,,res); return ...
- lvs+keepalived+bind实现负载均衡高可用智能dns【转】
转:https://www.cnblogs.com/mikeluwen/p/7068356.html 整体架构: 1.IP地址规划: Dns1:172.28.0.54 Dns2:172.28.0.55 ...
- vue-cli脚手架目录讲解
build目录 config目录 是webpack配置相关的 node-modules目录 是我们用npm install 安装的依赖代码库 src目录 是我们项目的源码(我们开发的所有项目文件都在s ...
- Big Table中文翻译
题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才. 官方的 Google Reader blog 中有对BigTable 的解释.这是Google 内 ...
- IP地址分配机构
IP地址分配机构 全球ip地址分配机构 互联网编号分配机构(IANA,Internet Assigned Numbers Authority)负责分配和规划IP地址,以及对TCP/UDP公共服务的端口 ...