dポイントプレゼントキャンペーン実施中!

FreeBSD初心者です(2ヶ月:FreeBSD 10.0-RELEASE)。
開発環境を構築しようと思い、dddをインストールしたのですがうまくいきません。

1.dddを起動すると:

$> ddd
gdb: cannot open master pty: そのようなファイルまたはディレクトリはありません
gdb: communication setup failed

メッセージが表示され、dddウインドウは表示されますが(gdb)プロンプトがいつまで経っても表示されません。

2.dddとgdbの通信を確立できないようで、ログファイルを参照しても:

Running GDB (pid xxxx, tty /dev/ptyXX)...

などのgdb起動完了のメッセージがありません。

3.デバッグ
$> gdb ddd

によりgdb上でdddを起動し、原因を調査すると:

/dev/ptyXX

ファイルをオープンしようとしているが失敗する、という現象のようです。

実際に/devディレクトリには"pty*"ファイルは存在しません。

4.webや「FreeBSDハンドブック」を参照すると、『MAKEDEVを使ってデバイスファイルを作成する』...『MAKEDEVスクリプトは削除された、代わりにmknodを使え』...『devfs......』.....等と書いてありますが、mknodあたりからどうしたらよいのか判らなくなりました。


デバイスファイル(/dev/pty)の作成方法をご教授ください。

A 回答 (1件)

MAKEDEV や mknod は記述が古いです。

昔は、「デバイスファイル」を手動で生成する必要があったため、登録されたデバイスに合わせて MAKEDEV や mknod を使う必要がありました。
今では、 /dev は devfs が管理しており、「カーネルが把握しているデバイスは自動的に /dev に現れる」ようになっています。そのため、デバイスファイルの作成作業は必要ありません。
デバイスファイルは自動で作られるものですから、「デバイスファイルがない」という問題が起きた場合、「デバイスファイルを作る方法を模索する」のではなく、「カーネルに必要なデバイスを認識させる方法を模索する」必要があるということになります。

で、解決方法なのですが、root権限で
# kldload pty
を実行してください(カーネルに pty モジュールを読み込ませる)。これでdddが使えるようになると思います。
(これは、OS起動時に毎回実行する必要があります。日常的にdddを使うのでしたら、
/boot/loader.confに
pty_load="YES"
という記述を追加してください。それで、毎回起動時に自動的にptyモジュールが読み込まれるようになります)


なお、以下、そのものずばりの質問とその回答が議論されています。
https://forums.freebsd.org/threads/ddd-1-debugge …
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事に起動を完了することを確認しました。

実はまだ少し起動後の動作がおかしいのですが、この質問に関しては完全に完了しました。
初心者の私にとっては、問題発生時の対処方法を見つける上で:

https://forums.freebsd.org/search/

をお教えいただいたことの方が有り難く存じます。
ありがとうございました。

お礼日時:2014/12/02 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!