UE4_调试_打包后的调试

附加进程调试

UE 启动 .uproject文件 ,例如 LearnUE4.uproject
在 vs 启动.sln文件,在vs中 调试->附加到进程,寻找
在这里插入图片描述

打印调试

// Log 灰色
UE_Log(LogTemp,Log,TEXT("HelloWorld"));
// Warning 灰色
UE_Log(LogTemp,Warning,TEXT("HelloWorld"));
// Error 红色
UE_Log(logTemp,Error,TEXT("HelloWorld"));

// %s 字符串 %f 浮点 %i 输出整形
FString var_str = TEXT("HelloWorld");
int32 var_int = 20;
float var_float = 56.0f;

// 打印变量
UE_LOG(LogTemp,Warning,TEXT("%s %i %f"),*var_str , var_int ,var_float);

Log 信息目录

LearnUE4\Saved\Logs

自定义打印

使用范围可以是全局 文件 类
UE4 自定义Log

UE4dump 调试

游戏崩溃文件,可上传给开发者

dump 文件目录

LearnUE4\Saved\Crashes\
在这里插入图片描述
可以用 vs 编辑器打开

在这里插入图片描述
点击截图中的红色部分,可以快速定位到出现bug的地方

### Unreal Engine 打包时遇到的堆栈溢出异常解决方案 当在 Unreal Engine 中打包项目时遇到 `EXCEPTION_STACK_OVERFLOW` 错误,通常意味着某个函数调用链过深或存在无限递归的情况。此类错误可能由多种原因引起,包括但不限于复杂的蓝图逻辑、过多的事件监听器或是某些特定配置不当。 #### 1. 检查并优化蓝图脚本 如果项目大量依赖于蓝图进行开发,则应仔细审查所有涉及复杂计算或循环操作的部分。特别注意那些可能导致深层嵌套调用的情形,比如反复触发同一节点或形成闭环引用[^1]。 对于已知容易引发问题的功能模块,考虑将其转换成 C++ 实现来提高效率和稳定性。C++ 编写的代码往往能更好地控制资源分配与释放过程,在处理大规模数据集时表现更佳。 #### 2. 调整编译设置 有时适当调整项目的构建参数也能有效缓解此现象: - **减少内联函数数量**:通过修改 `.uproject` 文件中的 `[BuildSettings]bForceIncludeAllModules=false` 来防止不必要的模块被加载入内存; - **启用调试信息**:虽然这会增加最终可执行文件大小,但在排查阶段非常有用。可以在编辑器中依次点击“编辑->项目设置->打包”,找到“高级选项卡”下的“始终生成调试信息”。 上述措施有助于定位具体哪个部分消耗了过多栈空间从而导致崩溃发生[^2]。 #### 3. 修改引擎源码(仅限有经验开发者) 针对极少数情况下即使经过充分优化仍无法解决问题的现象,可以尝试深入研究官方提供的修复补丁或者社区贡献者提交的相关改进提案。例如,有关如何修正切换控制器期间输入持续回调 Bug 的讨论就提供了宝贵的经验借鉴[^3]。 值得注意的是,直接改动 UE4 引擎核心组件需谨慎行事,并确保每次变更都经过严格测试验证其安全性及兼容性。 ```cpp // 示例:假设发现某处存在潜在风险的递归算法 void SafeRecursiveFunction(int depthLimit) { static int currentDepth = 0; if (++currentDepth >= depthLimit || /*其他终止条件*/) { // 达到最大深度或其他退出标准即返回 --currentDepth; return ; } // 正常业务逻辑... SafeRecursiveFunction(depthLimit); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值