高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1019
Can't attach during two-machine debugging with GDB


Q: 2 台のマシンで単純なネットワークを構成し、Mac OS X 上で GDB を使ってこれらのマシンのデバッグを実行します。次のように、ターゲットマシンの IP アドレスを使ってそのマシンに接続しようとしています。


    attach 111.22.33.44

しかし、必ず次のようなエラーが返されます。


    kdp_bind_remote: unable to resolve host "111.22.33.44"
    unable to create connection for host "111.22.33.44":RR_LOOKUP

なぜターゲットマシンに接続できないのでしょうか。

A: 恐らく Mac OS X の 10.1 よりも古いバージョンを実行しています。10.1 よりも前のバージョンでは、GDB の attach コマンドはホスト名を想定しており、IP アドレスではうまく動作しません (r. 2499453)。この Q&A の残りの部分は、システムを Mac OS X 10.1 以降にアップグレードできないことを想定して説明します。

ネットワークにドメインネームサーバがある場合は、ターゲットマシンのホスト名と IP アドレスが DNS で定義されていることを確認してください。

ネットワークに DNS がない場合、たとえば、クロスケーブルやスタンドアロンハブで 2 台のマシンを接続しているような場合は、両方のシステムで、それぞれのローカル NetInfo データベースでホスト名を定義する必要があります。(これは、Mac OS 9 や UNIX では「hosts」ファイルの設定に相当します)

ホスト名を定義する手順は次の通りです。

  1. /Applications/Utilities/NetInfo Manager を起動します。
  2. NetInfo データベースを編集できるようにするために、ウインドウ左下隅にある「カギ」ボタンをクリックします。
  3. 管理者のパスワードを入力して「OK」をクリックします。
  4. ブラウザビューの 2 番目の列で、「machines」という名前のノードを選択します。3 番目の列に、-DHCP-、broadcasthost、localhost のエントリが表示されます。
  5. 新規のエントリを最も早く作成する方法は、既存のエントリを 1 つ複製することです。したがって、3 番目の列の「localhost」項目を選択します。
  6. 「編集」メニューから「複製」を選択します。
  7. 確認のメッセージが表示されたら、「複製」をクリックします。
  8. 「localhost のコピー」という名前の新規エントリが表示され、このエントリのプロパティがブラウザビューの下に表示されます。「ip_address」プロパティの値をダブルクリックして、もう一方のマシンの IP アドレスを入力します。
  9. 「name」プロパティの値をダブルクリックして、もう一方のコンピュータに設定したいホスト名を入力します(これは、GDB の attach コマンドで使う名前になります)。
  10. 「serves」プロパティを 1 回だけクリックして、「編集」メニューから「削除」を選択します。
  11. 「ファイル」メニューから「保存」を選びます。
  12. 確認のメッセージが表示されたら、「このコピーのアップデート」をクリックします。
  13. 追加したいその他の各ホストエントリについて手順 6 〜 12 を繰り返します。それ以外の場合は、「NetInfo マネージャ」メニューから「終了」を選びます。再起動する必要はありません。

[2003 年 6 月 2 日]