お世話になっております。
<br/>
C++ 動的デバッグ (プレビュー) - Visual Studio (Windows) | Microsoft Learn
↑こちらのページを参考にUE5.3.2でDynamicDebuggingを有効にしようとしています。
<br/>
GitHub
↑この変更を取り込んだところ、以下のメンバがなくエラーが出力されたため、とりあえず該当部分をコメントアウトしました。
- Target.WindowsPlatform.PdbPageSize
- Target.WindowsPlatform.bAllowRadLinker
また、C#6.0 で対応していない記法↓もあったため修正しました。
HashSet<string> exts = [".dll", ".exe", ".exp", ".lib", ".map", ".pdb"]; List<FileItem> additional = [.. ProducedItems.Where(x => exts.Contains(x.Location.GetExtension())) .Select(x => FileItem.GetItemByFileReference(x.Location.ChangeExtension($".alt{x.Location.GetExtension()}"))) ];
<br/>
ここまででUEエディタが起動できるところまで対応できましたので、BuildConfiguration.xml で bDynamicDebugging を true にしてみたのですが、DynamicDebugging が有効になっていないようです。
<br/>
VisualStudioでUE5やプロジェクトの構成プロパティを確認すると、詳細(Advanced)がなく、C++の動的(Use C++ Dynamic Debugging)の状態を確認することができませんでした。
<br/>
UE5と関係なく、VisualStudioでC++アプリケーションのプロジェクトをつくると構成プロパティの詳細を確認できて、Dynamic Debugging でデバッグできることを確認しています。
<br/>
コメントアウトしているのが原因なのかもしれないのですが、どのようにしたらDynamicDebugging を有効にできるでしょうか?
<br/>
以上、よろしくお願いいたします。
お世話になっております。
UE5.3では試せていないですが、UE5.6においては Dynamic Debugging が有効となることを確認できました。仕組み上はCLを適用することでUE5.3においても同様に適用できるかと思われます。これを有効にするにあたって、以下の設定を Engine.ini ファイルに追加する必要がございます。
[/Script/WindowsTargetPlatform.WindowsTargetSettings] bDynamicDebugging=true
加えて以下の条件をパスする必要があります。特にコンパイラバージョンの指定があるので MSVC Compiler が 14.44.34918 を有効にしておく必要がございます。
protected bool IsDynamicDebuggingEnabled => Target.WindowsPlatform.bDynamicDebugging && Target.WindowsPlatform.Compiler.IsMSVC() && !(Target.WindowsPlatform.bAllowRadLinker) && !(Target.WindowsPlatform.Environment != null && Target.WindowsPlatform.Environment.CompilerVersion < new VersionNumber(14, 44, 34918)) && !(Target.bAllowLTCG || Target.bPGOOptimize || Target.bPGOProfile) && !(Target.Configuration == UnrealTargetConfiguration.Debug || Target.Configuration == UnrealTargetConfiguration.DebugGame) && !(Target.WindowsPlatform.bEnableAddressSanitizer) && !(Target.bSupportEditAndContinue);
上記の条件が満たした上でプロジェクトをコンパイルしてDynamic Debugging が有効になっている場合以下の内容がログに出力されます。
"Visual Studio Dynamic Debugging is enabled"
どうぞ、よろしくお願いします。
ご確認頂きありがとうございます。
無事にログ出力できていることが確認できてよかったのですが、現状はその方法でしか確認することができず、Visual Studioのプロジェクト内のプロパティ(Advanced)等から確認すること、切り替えることができないようになっております。よろしくお願いします。
ご回答ありがとうございます。
> MSVC Compiler が 14.44.34918 を有効にしておく
これが有効になっていませんでした。
MicrosoftPlatformSDK.Versions.csに必要なバージョンを追記、念のためBuildConfiguration.xmlにコンパイラバージョンを指定することでコンパイラが切り替わることを確認しました。
<?xml version="1.0" encoding="utf-8" ?> <Configuration xmlns="https://www.unrealengine.com/BuildConfiguration"> <WindowsPlatform> <Compiler>VisualStudio2022</Compiler> <CompilerVersion>14.44.35207</CompilerVersion> <bDynamicDebugging>true</bDynamicDebugging> </WindowsPlatform> </Configuration>
コンパイラバージョンが変わったことで多数のエラーが発生しました。UE5.6を参考に以下の※1のコードを変更したり、※2のプラグインのビルドを無効にしたりすることで、ビルド時に「Visual Studio Dynamic Debugging is enabled」がログに出力されることを確認できました。ありがとうございます。
`// ※1
Engine/Source/Runtime/Core/Public/Experimental/ConcurrentLinearAllocator.h
Engine/Source/Runtime/D3D12RHI/Private/D3D12CommandContext.h
// ※2
Engine/Plugins/Media/BlackmagicMedia/BlackmagicMedia.uplugin
Engine/Plugins/VirtualProduction/ICVFX/ICVFX.uplugin`確認させていただきたいのですが、Dynamic Debugging が有効になっているかどうかは、ビルド時の「Visual Studio Dynamic Debugging is enabled」のログの有無で確認するしかなく、VisualStudioのUE5プロジェクトの構成プロパティからは確認できないということであっているでしょうか?
ご回答ありがとうございます。
承知致しました。
必要なことは確認できましたので、こちらクローズで問題ございません。
ご対応ありがとうございました。