虚幻4调试模式和关于虚幻引擎4.18和4.19源码版,无法使用DebuggameEditor调试模式的解决方法。

最近用vs2017最新版的时候发现UE4.18和4.19preview会有一个问题,那就是在developmentEditor模式下调试,断点会飘。明明下了断点的地方直接跳过去了。于是去查了一下文档:

在Release模式下,代码会进行优化。所以很多调试符号都没有了。DevelopmentEditor其实还是Release模式。解决这个问题有两个办法,第一个就是手动关闭release模式的优化

加入#pragma optimize("",off)即可。但是你得去手动关闭每个你需要调试的cpp。这样比较麻烦。并且还有一些限制

还有一种方法就是直接切调试模式。但是在4.18和4.19preview模式下切调试模式的时候发现,DebugGameEditor直接编译不过去。原因是源码有bug,错误加载了一个文件。可以简单粗暴把下面一段代码注释掉:

注释掉后在build一下引擎就可以了。

如果不想用这么简单粗暴的办法,那就从根本上解决。因为引擎没有对DebugGame进行判断,那么我们就加一个

在Runtime/Source/Projects/Private/BuildiVersion.cpp中把FString FBuildVersion::GetFileNameForCurrentExecutable()这个函数改一下:

FString FBuildVersion::GetFileNameForCurrentExecutable()
{
	FString AppExecutableName = FPlatformProcess::ExecutableName();
#if PLATFORM_WINDOWS
	if(AppExecutableName.EndsWith(TEXT("-Cmd")))
	{
		AppExecutableName = AppExecutableName.Left(AppExecutableName.Len() - 4);
	}
#endif
#if IS_PROGRAM || IS_MONOLITHIC
	return FPaths::ProjectDir() / TEXT("Binaries") / FPlatformProcess::GetBinariesSubdirectory() / AppExecutableName + TEXT(".version");
#else
	FString Section = FPaths::EngineDir() / TEXT("Binaries") / FPlatformProcess::GetBinariesSubdirectory() / AppExecutableName;

	if (FApp::GetBuildConfiguration()==EBuildConfigurations::DebugGame)
	{
		Section += FString::Printf(TEXT("-%s-DebugGame"), FPlatformProcess::GetBinariesSubdirectory());
	}
	Section+= TEXT(".version");

	return Section;
#endif
}


Build一下。完美解决。


更新一下这篇文章:

2017年10月19日的时候,虚幻源码master版,官方已经亲自修复了这个问题了。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值