C# .NET例外スタックトレースの解析

C#と.NET例外スタックトレースを解析。.NETランタイム例外から名前空間パス、パラメータ型付きメソッドシグネチャ、ファイルパス、行番号を抽出します。

C#

詳細な説明

C# .NET例外スタックトレースの理解

C#/.NET例外スタックトレースは詳細な型情報、完全な名前空間パス、メソッドパラメータ型、ファイル位置を含みます。プログラミング言語の中でも最も冗長で情報豊富なスタックトレースフォーマットの1つです。

C#スタックトレースフォーマット

System.NullReferenceException: Object reference not set to an instance of an object.
   at MyApp.Services.UserService.GetProfile(Int32 userId) in C:\src\MyApp\Services\UserService.cs:line 42
   at MyApp.Controllers.UserController.Show(Int32 id) in C:\src\MyApp\Controllers\UserController.cs:line 18
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.Execute(Object controller)

スタックフレームコンポーネント

C#フレームは他の言語よりも多くの詳細を含みます:

  • 完全修飾メソッド名 --- 名前空間、クラス、メソッドを含む
  • パラメータ型 --- メソッドパラメータの型を表示(例:Int32 userId
  • ファイルパス --- ソースファイルへの完全なファイルシステムパス(PDBデバッグシンボルが利用可能な場合)
  • 行番号 --- lineプレフィックス付き(例::line 42

内部例外

C#はInnerExceptionを通じた例外チェーンをサポートしています。--->プレフィックスは内部(根本原因)例外を示し、--- End of inner exception stack trace ---は境界をマークします。

非同期スタックトレース

C#のasync/awaitはスタックトレースに表示されるステートマシンを作成します:<MethodName>d__N.MoveNext()パターンは非同期メソッドのステートマシンを示します。

ユースケース

C#例外スタックトレースはASP.NET Core Web API、Azure Functions、Xamarin/MAUIモバイルアプリ、Unityゲーム開発、Windowsデスクトップアプリケーションに表示されます。Application Insights、Elmah、Sentryを通じた本番監視がこれらのトレースをキャプチャします。内部例外チェーンの理解は根本原因の診断に不可欠です。

試してみる — Stack Trace Parser & Formatter

フルツールを開く