BLOGブログ

2016.05.13UE4UE/ Debug

[UE4] パッケージ済み実行ファイルをVisualStudioでデバッグする方法

改訂バージョン: Unreal Engine 4.21

今回は、パッケージ済みの実行ファイルを、VisualStudioを使用してデバッグする方法をご紹介します。

稀にではありますが、パッケージした場合だけ発生するバグに遭遇することもあります。
そのような場合に、調査方法の1つとしてVisualStudioのデバッガが使用できれば、解決へのかなりの近道となります。

 

 

まず、パッケージ作成時に1つだけオプションを変更しておく必要があります。

Project Settings -> Packaging の「Include Debug Files」をONにして下さい。

include_debug_files

あとは、通常通りにパッケージを作成すればOKです。

 

実行ファイルと同じフォルダに、pdbファイルが作成されていることを確認して下さい。

WindowsNoEditorフォルダ直下のMyProject.exeではなく、MyProject/Binaries/Win64/MyProject.exe が目的の実行ファイルになりますので、注意して下さい。

pdb

 

次に、VisualStudio側の設定を行います。

まずは、ビルド構成を変更します。
普段は「DebugGame Editor」「Development Editor」などの、「Editor」と付いた構成でビルドしているかと思いますが、これを「DebugGame」「Development」などの「Editor」と付いていない構成に変更します。
今回はパッケージを「Development」で作成したので、構成も「Development」にします。

build_config

 

このままビルドして実行してもゲームは起動出来るのですが、その場合、参照されるアセットはパッケージされたものではなく、Saved/Cooked 以下に保存された中間ファイルになります。
調査したいのがC++側の挙動のみであれば、これでも十分なのですが、アセットが絡む問題を追跡する場合には、パッケージ済みのアセットを参照して動作してもらわなければ困ります。

 

そこで次に、VisualStudioのプロジェクトのプロパティ画面を開きます。
UE4ではvcprojectが自動生成されるため、この画面自体をあまり使わなくなりがちですが、実は、デバッグ機能やビルドコマンドラインの機能はそのまま使用出来ます。

ここで、「デバッグ」の「コマンド」に、先ほどパッケージで作成されたexeファイルを指定します。

project_property

 

 

この状態でVisualStudioからデバッグを開始すると、パッケージ作成時にビルドされたexeを、同フォルダに作成されたpdbを使用してデバッグすることが可能になります。
ブレークポイントも呼び出し履歴もウォッチも、スレッドやメモリウィンドウも使用出来ます。

「Development」構成ではコードが最適化されていますが、「DebugGame」ではゲーム側のコードは最適化無しでデバッグ可能です。
エンジンをコードからビルドした場合には、エンジンコードも最適化されていない「Debug」構成でデバッグすることも出来ます。

 

この方法を知っておくと、プロジェクト終盤の問題対処が格段に楽になりますので、是非覚えておいて下さい。