DynamicDebuggingを有効にするとLiveCodingできない

この質問は、以下のスレッドに関連して作成されました: [Content removed]

<br/>

お世話になっております。

<br/>

Dynamic Debugging を有効にすると、Live Codingができなくなりました。

<br/>

Live Coding のログには以下のような出力がありました。

The module 'D:\Hoge\Binaries\Win64\UnrealEditor-{プラグイン名}.alt.dll' has not been loaded by any process. Changes will be ignored.​<br/>

Dynamic Debuggingを有効にしたまま、Live Codingを行うことはできるのでしょうか?

<br/>

以上、よろしくお願いいたします。​

UE5.6においてバグが再現できたので UE-309174 LiveCoding fails when DynamicDebugging is enabled としてバグ登録しました。

ログに出力されているようにDynamicDebuggingモードでは拡張子に.alt.が含まれたものがLiveCodingマニフェストに出力されるようになります。しかし実際の成果物は.alt.の部分の無い通常のdllがリストアップされ比較されています。この差によってリロードが失敗しています。

適切な修正は開発チームの対応をお待ちいただければと思いますが、ファイルのマッチング部分に手をいれることでエラーを回避することはできました。

(ただし正しく両機能を併用できるかは保証しかねます。もしかするとLiveCodingの中で.alt​付きのdllを制御の対象にするべきかもしれません)

変更は以下の通りで、適用後にLiveCodingConsole​を再ビルドしてください。​

void ServerCommandThread::CompileChanges(bool didAllProcessesMakeProgress, commands::PostCompileResult& postCompileResult) ... for(const TPair<FString, FModuleFiles>& Pair : ModuleToModuleFiles) { const LiveModule* liveModule = nullptr; std::wstring ModuleFileName = Filesystem::Devirtualize(Filesystem::NormalizePath(*Pair.Key).GetString()); types::unordered_map<std::wstring, const LiveModule*>::iterator ix = EnabledModulesByName.find(ModuleFileName); if (ix == EnabledModulesByName.end()) { // We couldn't find this exact module filename, but this could be a staged executable. See if we can just match the name. std::wstring ModuleFileNameOnly = Filesystem::GetFilename(ModuleFileName.c_str()).GetString(); //workaround begins const std::wstring DynamicDebuggingExtension = L".alt.dll"; const std::wstring StandardExtension = L".dll"; if (ModuleFileNameOnly.length() >= DynamicDebuggingExtension.length() && ModuleFileNameOnly.compare(ModuleFileNameOnly.length() - DynamicDebuggingExtension.length(), DynamicDebuggingExtension.length(), DynamicDebuggingExtension) == 0) { ModuleFileNameOnly.replace(ModuleFileNameOnly.length() - DynamicDebuggingExtension.length(), DynamicDebuggingExtension.length(), StandardExtension); } //workaround ends for (const LiveModule* testLiveModule : m_liveModules) ...​いずれにせよ5.3環境でDynamicDebuggingを動作させることはエンジン改造となりサポート対象外となることを承知いただけますと幸いです。

ご回答ありがとうございます。

諸々承知致しました。

ご教示いただきました変更を適用したところ、DynamicDebugging有効時でもLiveCodingが動作することを確認できました。

開発チームの対応が入りましたら、改めて動作確認したいと思います。

こちらの問題は解決できましたので、クローズしていただいて問題ございません。

ご対応ありがとうございました。