続・ VSCode で UE4 デバッグの launch.json: DebugGame と Development の切り替え追加と違いについて
概要
前回のポスト「VSCode で UE4/C++: デバッグ実行に必要な launch.json の設定の仕方 - C++ ときどき ごはん、わりとてぃーぶれいく☆」で VSCode の launch.json を設定して UE4 のデバッグ実行を VSCode から"えせ"スタンドアローン風に実行する方法を紹介した。
今回のポストでは UE4/C++ プロジェクトで標準的に用意される DebugGame と Development を切り替える方法と何が違うのかについて追加的に解説したい。
DebugGame と Development の切り替え
前回は launch.json の初手の作成方法の解説として Attach
と Launch
で2つのデバッグ実行モードを VSCode へ設定する方法を示した。今回はこのうちの Launch
を Debug
と Development
の2つに分けて、 Attach
Debug
Development
の3つに分けた launch.json を示す。
{ "version": "0.2.0" , "configurations": [ { "name": "Attach" , "type": "cppvsdbg" , "request": "attach" , "processId": "${command:pickProcess}" } , { "name":"Debug" , "type": "cppvsdbg" , "request": "launch" , "program": "C:/Program Files/Epic Games/UE_4.16/Engine/Binaries/Win64/UE4Editor.exe" , "args": [ "C:/<YOUR-UE4-PROJECT-PATH>/<YOUR-PROJECT-NAME>.uproject", "-debug", "-game" ] , "cwd": "${workspaceRoot}" } , { "name":"Development" , "type": "cppvsdbg" , "request": "launch" , "program": "C:/Program Files/Epic Games/UE_4.16/Engine/Binaries/Win64/UE4Editor.exe" , "args": [ "C:/<YOUR-UE4-PROJECT-PATH>/<YOUR-PROJECT-NAME>.uproject", "-game" ] , "cwd": "${workspaceRoot}" } ] }
Debug
は Development
に対して args
で指示する引数が1つ多く -debug
が追加されている。
DebugGame と Development の違い
-debug
を追加で渡して実行する Debug
モードでは、実行時に <YOUR-UE4-PROJECT-PATH>/Binaries/Win64/<YOUR-PROJECT-NAME>.exe
と一連の .dll の代わりに、 <YOUR-UE4-PROJECT-PATH>/Binaries/Win64/<YOUR-PROJECT-NAME>-Win64-DebugGame.exe
と一連の .dll を用いた実行を試みるようになる。
DebugGame と Development 、2つのコンフィグレーションで実際にどのようにデバッグ性が変化するのか図を交えて紹介する。
DebugGame:
Development:
適当なブレイクポイントで止めてみると、 Debug 版では全ての VARIABLES が丸見えでまさにデバッグ実行と言った風だが、 Development 版では VARIABLES の表示に幾つか Variable is optimized away and not available.
となり扱えない状態で実行されている事がわかる。 Development 版は Debug 版に比べ、デバッガーがまるで役に立たないほどではないものの、あここちでちらほらと最適化によってソースコードと対応の取れない変数や制御が発生している。
通常、 UE4Editor が起動時に読み出す C++ コードの産物は Development コンフィグレーション版だが、 C++er が特に VSCode 等の外部のエディターや開発環境を用いて UE4 開発を行う際には Debug と Development (必要に応じて他に Shipping も)を切り替えながら便利に開発を進捗させる事になる。