VisualStudio 调试 UE 项目技巧

在 VS 中调试时显示对象值

打开引擎路径:

1
Engine\Extras\VisualStudioDebugging

该路径下会有一个 UE4.natvis.zip 文件,将其拷贝到 VS 的下列路径中:

1
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Packages\Debugger\Visualizers

然后重启启动调试,就可以在调试窗口看到对象值了。

调试独立运行的 UE 项目

在 UE 的编辑器模式下以 Standalone 方式运行,在 VS 中是没办法及时 Attach to process 上的。
比如我们想要在 standalone 模式下调试引擎和项目,在 editor 下直接启动会创建一个新的进程,在 VS 中手动点 Attach to process 是很不方便的,也没有那么及时 (因为点完启动在等我们在 VS 中 attach 到进程上有可能引擎都已经启动完毕了)。
幸好 UE 提供了一个插件:UnrealVS,该插件的 VS 安装程序在引擎的 Engine\Extras\UnrealVS 目录下,根据你的 VS 版本选择安装。
安装完之后启动 VS,在 View->Toolbars->UnrealVS 启用,就会在 VS 的工具栏看到了。在这里选择你的项目:

后面的框是命令行框,填入的参数会在启动时传递给程序 (具体介绍看UnrealVS 里面的描述),所以我们可以在后面填参数使其以独立模式启动 (可以从Command-Line Arguments 查看支持的参数):

1
"$(SolutionDir)$(ProjectName).uproject" -game -windowed -log -verbose

这样就会在 VS 中使用 F5 启动项目时自动 attach 的到进程上的。

关闭代码优化

在调试时关闭 Target 或者指定模块的代码优化,能够更好的分析问题。
ModuleRulesOptimizeCode 属性是用来控制当前模块是否要开启优化代码,在我们用 VS 调试时,有时候会看到“变量已被优化,因而不可用”,这就是因为被优化了。
可以使用它来关闭优化:

1
2
// build.cs
OptimizeCode = CodeOptimization.Never;

具体的分析见这篇内容:变量已被优化,因而不可用。