リモートデバッグを行う

 特定の PC でしか発生しない問題を解決するのは容易なことではありません。オンラインソフト等、不特定多数に配布するものは特にやっかいです。 しかしながら、カスタマイズした業務アプリ等、客先でのみ発生する問題を解決するのであれば、方法がない訳ではありません。

Delphiを客先にインストールする

 これが最も簡単な方法です。"現地デバッグ"という奴ですね。しかしながら、この方法には問題があります。

リモートデバッグ

 そこでこの方法を採ります。リモートデバッガはその名の通り、遠隔でデバッグします。TCP/IP 経由でデバッグしますが、実質共有フォルダが必要なので、LAN 内でのみ有効な手段です (そもそもセキュリティの面でインターネット経由でデバッグするようには作られていません)。外部から持ち込まれた PC の接続許可があるのだったら、この方法を採用するのがいいでしょう。

 Delphi 4 以降ではリモートデバッグが可能で、Delphi 7 以降だと Professional 版から標準添付されています。気をつけなくてはならないのが Delphi 2005 には、どのエディションにもリモートデバッガが用意されていないという点です。また、BDS 2006 以降のリモートデバッガは Win9x へインストールする事ができない点にも注意が必要です。

 注意点です。Delphi 4~7 迄のリモートデバッガはターゲット OS が Win9x であっても動作しますが、BDS 2006 / Delphi 2007 のリモートデバッガはターゲット OS が Windows 2000 以降となっています。Delphi 2009 の場合、そもそも生成バイナリが Win9x では動作しません (中には動作するものもあるかもしれませんが)。

バージョン 9x 系 NT 系 Pro 版に添付
Delphi 3 またはそれ以前 (付属せず)
Delphi 4 ×
Delphi 5 ×
Delphi 6 ×
Delphi 7
Delphi 2005 (付属せず)
BDS 2006 / Turbo Delphi ×
Delphi 2007 ×
Delphi 2009 ×
Delphi 2010 ×
Delphi XE ×
Delphi XE2 ×
Delphi XE3 ×
Delphi XE4 ×
Delphi XE5 ×
Delphi XE6 ×
Delphi XE7 ×

リモートデバッガの準備

 それでは準備に取り掛かりましょう。リモートデバッガはインストール CD / DVD に収められており、Delphi インストーラのメニューからインストール可能です。しかしながら、アプリケーションのインストールを禁じている会社もあるでしょう。このような場合には "リモートデバッガ導入をファイルコピーで済ませ、用がなくなったら削除する" という手段を採ります。どちらの方法でも可能にするために、まず普通にリモートデバッガをインストールし、ファイルを抽出します。念のために、開発環境がインストールされていない環境 (仮想 PC 等)へインストールして下さい。

 BDS 2006 またはそれ以降では "($BDS)\bin" 内に存在するファイルを集めてリモートデバッガとして利用する事が可能なようです。詳しくは "リモート マシンへデバッガをインストールする (DocWiki)" を参照して下さい。"($BDS)\bin" からファイルを抽出する場合にはこのステップは不要です。

 デフォルトで、上記の場所へインストールされます。Delphi 2007 ~ XE のリモートデバッガは初期インストールフォルダがバッティングしますので注意して下さい。 インストールが完了したら、インストールフォルダにあるリモートデバッガ用のファイルをバックアップしておきます。

リモートデバッガのインストール / アンインストール (インストーラ使用)

 リモートデバッガをインストーラを使ってインストールできる環境ならば特に問題になる事はないハズです。

リモートデバッガのインストール (手動)

  1. "リモートデバッガの準備" で収集したファイルを同じフォルダに集めて (サブフォルダは作らない)、ターゲット PC にコピーします (例: "C:\RDEBUG")。
  2. デバッガ DLL を登録します。Win9x の場合、regsvr32.exe は "%WinDir%\System" にあります。デバッガ DLL はフルパスで登録して下さい。
  3. リモートデバッグサーバを起動します。

リモートデバッガのアンインストール (手動)

  1. リモートデバッグサーバを停止します。
    Delphi 4 の場合にはタスクを殺して下さい。それ以外の場合には通知領域にあるアイコン (緑の虫) を右クリックで終了させて下さい。
  2. デバッガ DLL を登録解除します。
  3. "C:\RDEBUG" フォルダを削除します。

リモートデバッガのインストール / アンインストール (手動) が面倒

 そう言われてしまうと話が先に進まないのですが (Linux とか触ったら発狂しますよ)...無保証でよければ、"リモートデバッガ インストーラ" を用意してみましたので、使ってみるのもテだと思います。Win9x でもちゃんと動作します。

 「手動と言いながらインストーラ?」と思われるかもしれませんが、これはこれで存在意義がありますので、早とちりされぬよう。

リモートデバッグを行う

 そんなに難しいものではありません。Delphi のバージョンによりやるべき事が若干違いますが、共通で事前にやる事は、

 この 2 点です。

 ~ Delphi 7 の場合

  1. [プロジェクト | オプション] を開く
  2. [リンカ]タブにある、"リモートデバッグ情報を含める" にチェックを入れる。
  3. [プロジェクト | 再構築] を行う
  4. プロジェクトフォルダに *.EXE と *.RSM が生成される。
  5. ターゲット PC にこの 2 つをコピーする (例: "C:\RD_TEST")。
  6. [実行 | 実行時引数] を開く
  7. [リモート]タブを開く
  8. "リモートパス" に、ターゲット PC にある EXE をフルパスで指定する。
  9. "リモートホスト" に、ホスト名またはIPアドレス (\\ は不要)を指定する。
  10. "読み込み"ボタン を押すか、[実行 | 実行] すれば、ターゲット PC で EXE が実行され、デバッグする事ができます。

 デバッグの度に、*.EXE と *.RSM を配布するのが面倒な場合には、

  1. ターゲット PC のフォルダを共有にする (例: "C:\RD_TEST")。
  2. [プロジェクト | オプション] を開く
  3. [ディレクトリ/条件]タブにある、"出力ディレクトリ" にターゲット PC の共有フォルダを指定する。
 こうしておくと便利でしょう。但し、これやってる間は 他の PC から共有フォルダアクセスし放題 なのでオススメはしません。

 BDS 2006 / Turbo Delphi / Delphi 2007 の場合

  1. [プロジェクト | オプション] を開く
  2. [リンカ]にある、"リモートデバッグシンボルを含める" にチェックを入れる。
  3. [プロジェクト | 再構築] を行う
  4. プロジェクトフォルダに *.EXE と *.RSM が生成される。
  5. ターゲット PC にこの 2 つをコピーする (例: "C:\RD_TEST")。
  6. [実行 | プロセスのロード] を開く
  7. [リモート]を選択
  8. "リモートパス" に、ターゲット PC にある EXE をフルパスで指定する。
  9. "リモートホスト" に、ホスト名または IP アドレス (\\ は不要)を指定する。
  10. 下にある "読み込み"ボタンを押す と、ターゲット PC で EXE が実行され、デバッグする事ができます。

 デバッグの度に、*.EXE と *.RSM を配布するのが面倒な場合には、

  1. ターゲット PC のフォルダを共有にする (例: "C:\RD_TEST")。
  2. [プロジェクト | オプション] を開く
  3. [ディレクトリ/条件]にある、"出力ディレクトリ" にターゲット PC の共有フォルダを指定する。
 こうしておくと便利でしょう (以下略)

 Delphi 2009 / 2010 / XE の場合

  1. [プロジェクト | オプション] を開く
  2. [リンク]にある、"リモートデバッグシンボルを含める" を True にする。
  3. [プロジェクト | 再構築] を行う
  4. プロジェクトフォルダに *.EXE と *.RSM が生成される。
  5. ターゲット PC にこの 2 つをコピーする (例: "C:\RD_TEST")。
  6. [実行 | プロセスのロード] を開く
  7. [リモート]を選択
  8. "リモートパス" に、ターゲット PC にある EXE をフルパスで指定する。
  9. "リモートホスト" に、ホスト名または IP アドレス (\\ は不要) を指定する。
  10. 下にある "読み込み"ボタンを押す と、ターゲット PC で EXE が実行され、デバッグする事ができます。

 デバッグの度に、*.EXE と *.RSM を配布するのが面倒な場合には、

  1. ターゲット PC のフォルダを共有にする (例: "C:\RD_TEST")。
  2. [プロジェクト | オプション] を開く
  3. [Delphi コンパイラ]にある、"出力ディレクトリ" にターゲット PC の共有フォルダを指定する。
 こうしておくと便利でしょう (以下略)

 Delphi XE2 以降の場合

FAQ

まとめ

 どこかで、

 という具合に「使い分けろ。持っていなければ早めに買え (特に Delphi 7)」 と言っていた理由の一つがリモートデバッガ機能です。開発環境が Windows 2000 以降にある場合で、"Win9x 環境をリモートデバッグできる Pro 版" というのは "Delphi 7" しかないのです。 今更、Win9x アプリを作成する機会はそうそうないかもしれませんが、過去に作ったアプリケーションのメンテナンスはあるかもしれません。そういった可能性がないわけではない方は速やかに "Delphi 7" を確保すべきです (旧 IDE 製品は 2008/12末 ですべてサポートが切れています)。

 リモートデバッグ機能をうまく使えば、客先の障害の出る実機に Delphi をインストールして "アクティベーション回数を減らす" なんて事も少なくなるでしょう...もっとも、経験上それが完全になくなるとは思えませんが。


 BACK