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