This document is about: SERVER 5
SWITCH TO

このページは編集中です。更新が保留になっている可能性があります。

Photon Server スタックオーバーフロー

スタックオーバーフローは、サイレントクラッシュを引き起こす可能性があるバックグラウンドの例外です。この例外をデバッグするのは困難です。
このドキュメントでは、Photon Server上で実行するカスタムコードが原因で発生するスタックオーバーフロー例外に対処する方法を説明します。

本番環境

スタックオーバーフローの場合にダンプやスタックトレースを収集するための、推奨された手順を以下に示します。

前提条件

  1. Debug Diagnostic Toolをダウンロードおよびインストールします。 Download v2 Update 2 or v2 Update 3.。

  2. WinDBGをダウンロードしてインストールします。 Windows Debuggerは、Windows Development Kitの一部です。お使いのWindowsに適切なdev. SDKバージョンをダウンロードしてインストールウィザードの実行中に、インストールする機能として「Debugging Tools For Windows」を選択します。

WinDBG for Windows 10をインストール
WinDBG for Windows 10をインストール

デバッグ診断ツールをセットアップ:ダンプの収集

以下の手順を参照してください:

  1. Debug Diagnostic Tool ("DebugDiag 2 Collection").を開きます。デフォルトで「Select Rule Type」のウィザードウィンドウが開きます。開かない場合は「Add Rule」をクリックして、「Rule Type」として「Crash」を選択し、「Next」をクリックしてください。
Rule Typeの選択
Rule Typeの選択
  1. 「Select Target Type」ウィンドウで「A specific process」を選択し、「Next」をクリックします。
Target Typeの選択
Target Typeの選択
  1. 「Select Target」ウィンドウでリストから「PhotonSocketServer.exe」を選択し、「Next」をクリックします。
Target Processの選択
Target Processの選択
  1. 「Advanced Configuration」ウィンドウの「Advanced Settings」セクションで、「Exceptions」をクリックします。
Advanced Configuration
Advanced Configuration
  1. 「First Chance Exception Configuration」ウィンドウで、「Add Exception...」をクリックします。
First Chance Exceptionの設定
First Chance Exceptionの設定
  1. 「Configure Exception」ウィンドウで、例外のリストから「Stack Overflow」を選択します。
    右側のドロップダウンメニューから「Action Type」として「Full Userdump」を選択し、「Action Limit」を0に設定します。
    完了したら、「OK」をクリックします。
Configure Exception
Configure Exception
  1. Action Limitの値が0である点について、警告ダイアログボックスが表示されます。「Yes」をクリックして、続行します。
Action Limit 0 Warning Action Limit 0の警告
Action Limit 0 Warning Action Limit 0の警告
  1. 「First Chance Exception Configuration」ウィンドウに、Stack Overflow例外の設定が追加されたことを確認できます。
First Chance Exception Configuration
First Chance Exception Configuration
  1. 「Advanced Configuration」ウィンドウに戻り、「Next」をクリックします。
Advanced Configuration
Advanced Configuration
  1. 「Select Dump Location And Rule Name」ウィンドウでは、デフォルトのルール名を変更できます。任意の一時フォルダパスに「Userdump Location」を設定し、「Next」をクリックします。
Select Dump Location And Rule Name
Select Dump Location And Rule Name
  1. 「Add Rule」ウィザードは、最後のウィンドウ「Rule Completed」を開きます。「Activate the rule now」を選択し、「Finish」をクリックします。
Rule Completed
Rule Completed
  1. Debug Diagnosticは、「Symbol Search Path」をsrv*c:\symcache*https://msdl.microsoft.com/download/symbolsに自動的に設定するよう指示します。
Symbol Search Path for Debugging
Symbol Search Path for Debugging
デバッグシンボルの設定
デバッグシンボルの設定
  1. メインのDebug Diagnostic Toolウィンドウに戻ると、設定されたルールを参照できます。
設定後のクラッシュルール
設定後のクラッシュルール

Debug Diagnostic Toolのセットアップ: ダンプ分析

  1. Debug Diagnostic Tool ("Debug Diag 2 Analysis")を開きます。
Debug Diag 2 Analysis
Debug Diag 2 Analysis
  1. 「Add Data Files」を使用してダンプファイルを追加します。
収集されたダンプファイルを追加
収集されたダンプファイルを追加
  1. ダンプファイルの追加が完了したら、「分析を開始」できます。
ダンプファイルの分析を開始
ダンプファイルの分析を開始
  1. 分析が読み込まれますが、この読み込みには数分かかる場合があります。その後、ブラウザにレポートが表示されます。
Debug Diagnostic Analysisの読み込み
Debug Diagnostic Analysisの読み込み

Visual Studioを使用してダンプを開く

Visual Studioでダンプファイルを開き、「Debug Mixed Mode」を実行します。

Visual Studioでダンプファイルを開く
Visual Studioでダンプファイルを開く

スタックオーバーフロー例外が発生するとデバッグが中断します。例外ブレークポイントと完全なスタックトレースを取得します。

ダンプからのブレークポイントとスタックトレース
ダンプからのブレークポイントとスタックトレース

WinDBGを使用してダンプを開く

ルールタイプの選択
ルールタイプの選択

WinDBGを使用してダンプを開き、以下のコマンドを設定します:

  • .sympath srv*C:\symcache*https://msdl.microsoft.com/download/symbols
  • .reload
  • .loadby sos clr. (注: .NET 4.0以降をデバッグしている場合には.loadby sos clrです。その他の場合、コマンドは.loadby sos mscorwksです。)
  • !clrstack

開発環境

一度ルールが追加されると、Visual Studioデバッガを「PhotonSocketServer」プロセスに追加できなくなります。 これはルールで設定されたプロセスに、Debug Diagnostic Toolがデバッガとして自動的に追加されるためです。Debug Diagnostic ToolがPhoton Serverのアクティブなルールとともに実行されている際に、Visual StudioからPhoton Serverを起動した場合には、 Debug Diagnostic Toolはダンプを残すことなく、起動時にクラッシュします。

プロセスをアタッチできない旨のエラー
プロセスをアタッチできない旨のエラー

デバッグツールが互いに阻害しあわないように、以下のレジストリキーの削除を推奨します:

  • HKEYLOCALMACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
  • HKEYLOCALMACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
Back to top