リモートデバッグを行う

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

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

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

リモートデバッグ

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

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

 注意点です。Delphi4~7迄のリモートデバッガはターゲットOSがWin9xであっても動作しますが、BDS2006/Delphi2007のリモートデバッガはターゲット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 ×

リモートデバッガの準備

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

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

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

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

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

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

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

  1. リモートデバッグサーバを停止します。
    Delphi4の場合にはタスクを殺して下さい。それ以外の場合には通知領域にあるアイコン(緑の虫)を右クリックで終了させて下さい。
  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 の場合

  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の共有フォルダを指定する。
 こうしておくと便利でしょう(以下略)

FAQ

まとめ

 どこかで、

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

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


 BACK