Version: 2017.1
ユニバーサル Windows プラットフォーム: .NET スクリプトバックエンドのプラグイン
ユニバーサル Windows プラットフォーム: IL2CPP スクリプティングバックエンド

#ユニバーサル Windows プラットフォーム: .NET スクリプティングバックエンドのデバッグ

クラッシュしたり不可解な動作に遭遇した場合は、次の場所にある player ログを常にチェックしてください - <user>\AppData\Local\Packages\<productname>\TempState\UnityPlayer.log 。バグの報告をする際にはこの貴重な情報が含まれている player ログを是非添付してください。

現状では C# スクリプトのみデバッグが可能です。

Note: ユニバーサル Windows プラットフォームは Microsoft .NET で実行されています。そのため、スクリプトを MonoDevelop でデバッグできません。代わりに、 Visual Studio 2013 を使用してください。

簡単な手順は次のとおりです。

  • ユニバーサル Windows プラットフォームにビルドするとき、Unity C# projects をチェックします。
  • これにより、ユニバーサル Windows アプリと互換性のある Assembly-CSharp-* プロジェクトが作成されます。
  • 補足 : もし直前の Unity C# projects がチェックされていなかった場合、フォルダーを空にするか * .sln と * .csproj を削除してビルドしてください。なぜなら、Unity はこれらのファイルに参照を追加する必要があるからです。しかし、すでに参照が存在する場合は上書きしません。
  • ソリューションを開くと、Assembly-CSharp-* プロジェクトが含まれています。
  • 確認したい場所にブレークポイントを配置して、シンプルにアプリケーションをデバッガーで開始します。

例外

アプリケーションの実行中、Visual Studio へ例外が発生した場合に停止するよう指示できます。Debug -> Exceptions を選択します。

  • マネージドの例外には Common Language Runtime Exceptions と Managed Debugging Assistants が有効にできます。
  • 不明な場所で例外が発生した場合は、すべての例外を有効にできます。

補足 : すべての例外を有効にした場合、Visual Studio は WinRT originate errorWinRT transform error のような無害な例外が発生した場合でも停止するため、それらは除外しそのまま継続します。

UnityPlayer.dll からのコールスタックの解決

Unity エンジン自身がクラッシュした場合、コールスタックを解析することで役立つ情報を得られ、必要であればバグ報告とともに提供可能です。

補足 : Unity エンジンのコールスタックは .pdb ファイルが使える場合は解析可能です。Unity はDebug 設定に関する  .pdb ファイルを提供します。

Unity エンジンがクラッシュしブレークポイントで停止したとします ( 補足 : Debug -> Exceptions メニューからすべての例外を有効にすると、Visual Studio はクラッシュした時点で停止します)。Debug -> Windows -> Call Stack と移動すると、Call Stack ウィンドウが開きます。UnityPlayer.dll から関数の名前が表示されない場合は、シンボルが読み込まれていないということです。これを解決するためには、関数上で右クリックし Load Symbols を選びます。UnityPlayer.pdb は [プロジェクトへのパス]>\Players[Windows80 または Windows81][X86 か ARM か X64]\debug にあります。

Microsoft-Windows-TWinUI

これはデバッガなしで確認できる、アプリケーションが起動しないことに関する情報を提供するログで、次の位置にあります。

コントロールパネル -> 管理ツール -> イベントビューアー -> アプリケーションとサービスログ -> Microsoft -> Windows -> Apps -> Microsoft-Windows-TWinUI/Operational


ユニバーサル Windows プラットフォーム: .NET スクリプトバックエンドのプラグイン
ユニバーサル Windows プラットフォーム: IL2CPP スクリプティングバックエンド