Mono を使用したリモートデバッグ
Mono を使用して Mac または Linux で .NET アプリを実行すると、アプリケーションの動作に違いが見られたり、Windows マシンで同じアプリを実行したときには再現されない奇妙な例外が発生したりすることがあります。 このような場合に、リモートデバッグが役立ちます。
デバッグ情報
デバッグモードでプロジェクトをビルドすると、MSBuild は基本的にコンパイルされたアセンブリのバイナリコードをソースコードにリンクするデバッグ情報を含む PDB ファイルを生成します。 Mono のバージョンによって、異なる PDB が必要になります:
バージョン 5.x はポータブル PDB 形式をサポートしているため、プロジェクトがポータブル PDB でビルドされていることを確認してください。
これを行うには、プロジェクトを右クリックして プロパティ を選択し、開いたダイアログでビルド構成を選択し、 デバッグタイプ セレクターで ポータブル を選択します。
以前のバージョンでは、 .mdb 形式のデバッグ情報が必要です。
pdb2mdb ツール(英語)を使用して、 .pdb を .mdb に変換できます。
ただし、JetBrains Rider では 外部コードのデバッグが有効化されているため、JetBrains Rider 設定 の ページで 外部ソースデバッグを有効化 Ctrl+Alt+S が選択されている場合(これはデフォルトです)、デバッグ情報がなくてもリモート Mono アプリをデバッグできます。
デバッグオプション
JetBrains Rider でアプリケーションのソースコードを開き、そのバイナリ実行可能ファイルまたはアセンブリをリモートマシンへコピーすると、アプリのデバッグを開始できます。
まず、 Mono リモート型の 実行 / デバッグ構成を作成します。 設定オプションでは、リモートアプリケーションへの接続方法に応じて、接続のホストとポートを指定する必要があります。
リモートアプリは、デバッグエージェント(
server=yフラグ付き)を備えたサーバーとして機能します。この場合、最初にリモートマシンでアプリを起動し、次にこの実行 / デバッグ構成を起動してアプリに接続します。 リモートマシンのコマンドラインパラメーターの例を次に示します。
mono --debugger-agent=address=X.X.X.X:12345,server=y,transport=dt_socket --debug MyDotNet.exeホスト と ポート の値を実行/デバッグ構成で リモートマシン のホスト/ポートとして設定する必要があります。つまり、上記のコマンドラインでリモートアプリを起動する場合、 ホスト フィールドに
X.X.X.Xを、 ポート フィールドに1234を指定してください。リモートアプリはクライアントとして動作し、JetBrains Rider は Mono デバッガーサーバーとして動作するため、まずこの実行 / デバッグ構成を開始し、リモート Mono アプリケーションがデバッガーにアクティブに接続するのを待つことができます。
例: アプリケーションの起動をデバッグする場合は、この方法でリモート Mono アプリケーションに接続できます。 リモートマシンのコマンドラインパラメーターの例を次に示します。
mono --debugger-agent=address=Y.Y.Y.Y:34567,server=n,transport=dt_socket --debug MyDotNet.exeこの場合、 ホスト と ポート の値を JetBrains Rider が実行されているマシン のホスト/ポートとして設定する必要があります。つまり、上記のコマンドラインでリモートアプリを起動する場合、 ホスト フィールドに
Y.Y.Y.Yを、 ポート フィールドに34567を指定してください。
デフォルトでは、この実行 / デバッグ構成は Mono デバッガークライアントを起動します。 サーバーとして動作させるには、 受信接続を聞く チェックボックスを選択します。