UFunction::Invoke のデバッグ
2017年11月29日

UFunction::Invoke のデバッグ

作成 Nick Darnell

10 月に Nick Penwarden が、Fortnite Battle Royale の開発中に適用した いくつかの改善点 についての記事を投稿しました。

今回は、Battle Royale の開発中に私が追加した便利なデバッグ機能についてご紹介します。開発チームはブループリント ベースのウィジェットを頻繁に使っていたため、C++ で以下のようなコールスタックをしばしば目にしましたが、ブループリントのどこからネイティブ コールが行われたのかまではキャプチャーされません

 
[Your C++ Code]
UFunction::Invoke(...)  
UObject::ProcessEvent(...)  
AActor::ProcessEvent(...)  
[Rest of the stack]

Fortnite の制作では見慣れない沢山のコードを使って作業していたため、呼び出し元がわからないことがありました。調査のために、Visual Studio の Immediate Window から実行できる C コマンドを追加し、現在のブループリント / スクリプティングのコールスタックをプリントできるようにしました。

ゲームのエディタのビルドを実行する場合、以下のコマンドを使用することができます。

{,,UE4Editor-Core}::PrintScriptCallstack()

4.18 以降を使用しているモノリシックビルドの場合、以下のようになります。
::PrintScriptCallstack() 
770_DebuggingUFunction_Invoke.jpg

UE4 プロジェクトのコールスタックのライブスナップショットが得られるこのコマンドがお役に立てば幸いです。