【UE4源代码观察】尝试调试UBT

2024-09-06 23:48

本文主要是介绍【UE4源代码观察】尝试调试UBT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在之前的博客《【UE4源代码观察】手动建立一个使用UBT进行编译的空白工程》中我尝试动手搭建了一个用UBT进行编译的空白的工程。但是对UBT其中的逻辑并不理解。

后来在学习UE4源代码的过程中,又了解了它的一些行为。目前,对我影响较大的是:1.他会有一些逻辑去添加一些宏。2.他会有一些逻辑去给修改ModuleRules(和.build.cs中内容的角色一样)。这时候我发现一些和预期不太一样的行为,因此就有了调试的需求。
所幸,步骤很简单:

步骤

1.获得命令行参数

UBT的参数最基本上是一个Target
不过为了省事,也可以直接看想要编译的项目的配置页面中启动UBT的命令行:
在这里插入图片描述
.bat后面的就是参数,这些参数在.bat中会直接传递给UBT的exe

2.调试

然后给UBT的属性面板加上这些参数:
在这里插入图片描述
在这里插入图片描述
然后设置为启动项目:
在这里插入图片描述
然后确保处于debug下:
在这里插入图片描述
最后,就可以点“调试”了:
在这里插入图片描述

实例

最近在看TargetPlatform模块时我有一个调试UBT的需求:
我觉得UBT给我的模块增加一些我当前觉得并不需要的模块,例如UEBuildIOS.cs有一处逻辑:

/// <summary>
/// Modify the rules for a newly created module, where the target is a different host platform.
/// This is not required - but allows for hiding details of a particular platform.
/// </summary>
/// <param name="ModuleName">The name of the module</param>
/// <param name="Rules">The module rules</param>
/// <param name="Target">The target being build</param>
public override void ModifyModuleRulesForOtherPlatform(string ModuleName, ModuleRules Rules, ReadOnlyTargetRules Target)
{if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Mac)){bool bBuildShaderFormats = Target.bForceBuildShaderFormats;if (!Target.bBuildRequiresCookedData){if (ModuleName == "Engine"){if (Target.bBuildDeveloperTools){Rules.DynamicallyLoadedModuleNames.Add("IOSTargetPlatform");Rules.DynamicallyLoadedModuleNames.Add("TVOSTargetPlatform");}}

IOSTargetPlatformTVOSTargetPlatform都是IOS平台用的,按照我之前的理解,我不应该需要。所以我现在要确认逻辑是否真的跑到了这里,如果是的话探究一下为什么。

在这里加上断点之后,我似乎发现了问题:
在这里插入图片描述
从这里看,他似乎是对很多的平台都执行了这个操作,不光包括当前所在的Windows平台,因此增加了IOS平台用的东西是正常的。

这篇关于【UE4源代码观察】尝试调试UBT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143461

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

运营版开源代码 多语言跨境商城 跨境电商平台

默认中英双语 后台带翻译接口 支持133种语言自动翻译 支持多商户联盟 一键部署版本 伪静态+后台登陆后缀 源码下载:https://download.csdn.net/download/m0_66047725/89722389 更多资源下载:关注我。

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT