虚幻5的C++调试踩坑

发布于:2025-04-10 ⋅ 阅读:(38) ⋅ 点赞:(0)

本地调试VS附加调试

踩坑1 预编译版本的UE5没有符号文件,无法调试源码

官方代码调试所需要的符号文件bdp需要下载导入。我安装的5.5.4是预编译版本,并非ue5源码。所以不含bdp文件。需要调试官方代码则需要通过EPIC中下载安装。右键UE版本,打开 选项。
在这里插入图片描述
到此,若你调试,可以看到官方代码能够调试成功,但是自己的代码附加调试还是无法命中断点。

纯蓝图转C++项目

在虚幻5中,首先创建项目有两种:纯蓝图 以及 C++项目。
通过工具新建c++类。可以先建个空白的。然后退出UE5,打开项目根目录,删除Binaries文件夹、Intermediate文件夹。右键Draft.uproject选择生成项目文件,接着打开Draft.sln解决方案。
在这里插入图片描述
打开项目后,解决方案里面有多个项目,只需要设置自己项目名称为启动项目,然后重新生成。
到此。蓝图项目变为了C++项目。编译成功后,通过EPIC可以打开。打开后UE界面右下角出现编译图标。
关闭实时编译防止报错。

本地调试(新创建一个UE界面)

此时,选择Development Editor 配置调试项目Draft,使用绿色本地调试按钮,则会重新创建一个UE5窗口,能够进入并命中断点。这种方式调试成功,但是每次需要重新打开UE编辑器,时间慢、卡顿。
因此需要使用附加程序调试。

踩坑2 附加程序调试

选择附加程序到Unreal engine.exe上调试。发现显示断点无法命中,不生效,打开UE5编辑器测试。确实如此。
检查自己的代码执行,确实输出了日志,表示执行了,但是没命中断点。

打开 调试-窗口-模块。发现只有名称Unreal Editor.exe模块。自己的项目名称为Draft没有加载进来。

查资料得知:

检查编译的配置,这里有四种模式,Debug Game、Debug GameEditor、Development、Development Editor。每种功能不一样。
在这里插入图片描述
测试检查发现,无论哪一种他们有一些能够在项目文件夹Draft\Binaries\Win64\中生成相关的pdb符号文件。但是这些dll或者exe都没有在附加程序调试的时候被加载到模块中。

到此,附加程序调试时候,编译没问题、程序执行有输出(只是不命中断点)、pdb符号文件生成成功的、死活就是加载不进去!!!!
直接本地调试一下就命中了,气人😡

断点失效原因:最后发现附加程序调试的时候,会加载整个UE编辑器的代码模块,因此数量庞大,而Visual Studio默认的调试模块最多500个,导致我自己写的代码生成的pdb文件没有加载进去。
解决办法:通过添加以下注册表项并重新启动 PC 来增加限制
打开注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
新建项:类型DWORD,10进制,名称DebuggerMaxModuleMsgs ,值 2048。重启电脑。

选择最长用的Development Editor,x64,Draft。启动EPIC的UE5项目,重新附加到Unreal Editor。
打开调试-窗口-模块。加载的模块大于500了,直接搜索Draft,发现有了。测试是否能调试:按照预期命中断点。并且不会再新打开UE5编辑器了。在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到