6

次のコードを持つ単純な VCL win32 アプリケーションを作成しました。

procedure TForm5.Button1Click(Sender: TObject);
begin
  ShowMessage('bingo');
end;

ランタイム パッケージを使用してアプリケーションをコンパイルし、次のスイッチをオンにしました。

  1. デバッグ情報 -> true
  2. リモート デバッグ シンボルを含める -> true
  3. アサーション、デバッグ情報、ローカル シンボル、debug dcus を使用 -> true

出力には次のファイルがあります。

  1. Project1.exe
  2. project1.rsm

2 つのランタイム パッケージは次のとおりです。

  1. vcl160.bpl
  2. rtl160.bpl

Button1Click ハンドラーにブレーク ポイントを設定しました。アプリケーションをデバッガー モードで実行すると、ローカル IDE デバッガーはそこで停止します。

次に、ランタイム パッケージを使用してアプリケーションをリモート デバッグしてみます。

リモート プロファイルを 32 ビット Windows プラットフォームに割り当てます。テスト接続は、リモート プロファイルで機能します。PAServer もリモート マシンで開始されました。Delphi XE2 IDE デバッガーでアプリケーションを実行しようとすると、次の 4 つのファイルがリモート マシンにコピーされていることがわかります。

  1. Project1.exe
  2. project1.rsm
  3. vcl160.bpl
  4. rtl160.bpl

ただし、イベント ログには次のように表示されます。

Module Load: Project1.exe. No Debug Info. Base Address: $00400000. Process Project1.exe (1676)

モジュールにはデバッグ情報がないため、すべてのブレークポイントはトリガーに失敗します。

ランタイム パッケージを使用せずに単一ファイルの .exe アプリケーションをビルドしようとしました。同じリモート デバッガーの手順が機能し、アプリケーションをリモートでデバッグできます。

ランタイム パッケージでビルドされたアプリケーションでリモート デバッグが失敗する原因は何ですか?

4

1 に答える 1

1

使用するランタイム パッケージに対応する「.dcp」ファイルを追加でデプロイする必要があるようです。

デバッガー ノート(XE2 のリリース ノート)から:

アプリケーションの展開に .dcp ファイルを追加してデバッグ情報を確認する

Delphi アプリケーションがランタイム パッケージとリンクしている場合、期待されるデバッグ情報が生成されないことがあります。これは、Mac OS X アプリケーションとリモート Win64 またはリモート Win32 アプリケーションに当てはまります。回避策は、Deployment Manager を使用して、ランタイム パッケージ リスト内のランタイム パッケージに対応する .dcp ファイルを追加することです。たとえば、rtl を使用している場合は、rtl.dcp ファイルをデプロイする必要があります。

次のように、Embarcadero\Rad Studio\9.0\lib ディレクトリにある .dcp ファイルを使用します。

  • OS X アプリケーションの場合: Embarcadero\Rad Studio\9.0\lib\osx\release
  • リモート 64 ビット Windows アプリケーションの場合: Embarcadero\Rad Studio\9.0\lib\win64\release
  • リモート 32 ビット Windows アプリケーションの場合: Embarcadero\Rad Studio\9.0\lib\win32\release
于 2012-05-09T13:29:11.590 に答える