メインコンテンツまでスキップ

ローカルデバッグガイド — C#

Last updated on July 14, 2026

注釈:本資料はAI技術を用いて翻訳されています。

このガイドでは、C# で書かれた Extend Service Extension アプリのデバッグに特化した内容を説明します。環境セットアップ、VS Code デバッグワークフロー、ログの読み方、一般的な問題など、共通のデバッグ概念については以下を参照してください。


プロジェクト構成

src/
└── AccelByte.Extend.ServiceExtension.Server/
├── AccelByte.Extend.ServiceExtension.Server.csproj
├── Program.cs # Entry point
├── Classes/
│ ├── AuthorizationInterceptor.cs # IAM token and permission validation
│ └── ...
├── Protos/
│ ├── service.proto # gRPC API definition
│ └── ...
└── Services/
└── MyService.cs # Your business logic
ファイル役割
Program.csエントリーポイント — gRPC サーバー、gRPC-Gateway、メトリクス、認証を接続する。
Services/MyService.csビジネスロジック — gRPC サービスメソッドを実装する。
Classes/AuthorizationInterceptor.cs受信するすべてのリクエストの IAM トークンと権限を検証する。
Protos/service.protogRPC API を定義する — エンドポイント、リクエスト/レスポンスの構造、必要な権限。

ポート番号:

ポート用途
6565gRPC サーバー(内部用 — gRPC-Gateway が使用)
8000gRPC-Gateway HTTP/REST — ブラウザ、Postman、curl から呼び出す
8080Prometheus メトリクスエンドポイント(/metrics

サービスをローカルで実行する

ターミナルから

# .env ファイルからすべての変数をエクスポートする
export $(grep -v '^#' .env | xargs)

dotnet run --project src/AccelByte.Extend.ServiceExtension.Server

VS Code から

Terminal → Run Task → "Run: Service" を使用します。 このタスクは .vscode/tasks.json で定義されており、.env ファイルを自動的に読み込みます。

サービスが起動していることを確認する

次のようなログが表示されるはずです。

{"time":"...","level":"INFO","msg":"app server started","service":"extend-app-service-extension"}
{"time":"...","level":"INFO","msg":"starting gRPC-Gateway HTTP server","port":8000}
{"time":"...","level":"INFO","msg":"serving prometheus metrics","port":8080,"endpoint":"/metrics"}

ブラウザで http://localhost:8000<BASE_PATH>/apidocs/ を開き、Swagger UI が動作していることを確認します。


デバッガーをアタッチする

VS Code(推奨)

このリポジトリには、.vscode/launch.json にすぐに使える起動設定が用意されています。

{
"name": "Debug: Service",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/src/AccelByte.Extend.ServiceExtension.Server/bin/Debug/net8.0/AccelByte.Extend.ServiceExtension.Server.dll",
"envFile": "${workspaceFolder}/.env",
"cwd": "${workspaceFolder}",
"console": "integratedTerminal"
}

共通ガイドのデバッガーのアタッチ の手順に従い、ドロップダウンから "Debug: Service" を選択します。

その他の IDE

診断機能を有効にしてアプリを起動し、「Attach to process」を使って IDE をアタッチします。

export $(grep -v '^#' .env | xargs)
DOTNET_EnableDiagnostics=1 dotnet run --project src/AccelByte.Extend.ServiceExtension.Server

ほとんどの IDE(JetBrains Rider、Visual Studio)は、Run → Attach to process で実行中の .NET プロセスへのアタッチをサポートしています。


ブレークポイントを設置する場所

調査したいことファイルと場所
呼び出されている特定の REST エンドポイントServices/MyService.cs — 該当メソッドの先頭
認証・トークン検証の失敗Classes/AuthorizationInterceptor.csIntercept メソッド
データの保存・読み込みが正しく行われないサービスで使用しているストレージ/リポジトリクラス
サービスがまったく起動しないProgram.cs の起動時初期化ブロック

条件付きブレークポイントの構文については、 C# 言語ガイドを参照してください。


ログを読む

jq によるログフィルタリングについては、 C# 言語ガイドを参照してください。


エンドポイントを手動でテストする

curlgrpcurl の使い方については、共通ガイドの grpcurl でのテストを参照してください。

Swagger UI でのテスト(SE 固有)については、SE メインガイドの エンドポイントを手動でテストするを参照してください。


C# 固有のトラブルシューティング

Proto の変更が反映されない

症状: Protos/service.proto を編集したが、実行時に何も変わらない。

原因: 生成された gRPC スタブが再ビルドされていません。

対処法: クリーンビルドを実行します。

dotnet build src/AccelByte.Extend.ServiceExtension.Server

.csproj ファイルには <Protobuf> 項目が含まれており、ビルド時に自動的にコード生成が実行されます。 それでも古い動作が続く場合は、以下を実行してください。

dotnet clean && dotnet build src/AccelByte.Extend.ServiceExtension.Server

DOTNET_ENVIRONMENT と設定ソース

アプリは appsettings.json や環境固有のバリアント(appsettings.Development.json)から 追加の設定を読み込むことがあります。開発モードの設定を有効にするには、.envDOTNET_ENVIRONMENT=Development を設定してください。


ポートの競合を確認する

C# 言語ガイドのポートの競合を確認する を参照してください。


AI 支援

アプリテンプレートには、 .claude/skills/debugging-guide/SKILL.md にある Claude エージェントスキルが同梱されています。

AI プロンプトのヒントと MCP サーバーの詳細については、共通ガイドの AI 支援によるデバッグを参照してください。


参考資料