この質問は、以下のスレッドに関連して作成されました: [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が動作することを確認できました。
開発チームの対応が入りましたら、改めて動作確認したいと思います。
こちらの問題は解決できましたので、クローズしていただいて問題ございません。
ご対応ありがとうございました。