dbx コマンドによるデバッグ |
第 13 章
子プロセスのデバッグ
この章では、子プロセスのデバッグ方法を説明します。
dbx
は、fork
(2) およびexec
(2) を介して子を作成するプロセスのデバッグに役立つ機能をいくつか備えています。単純な接続の方法
子プロセスがすでに作成されている場合は、次のいずれかの方法でそのプロセスに接続できます。
$
dbx
progname pid
(
dbx
)
debug
progname pidどちらの場合も progname を "
-
" に置き換えることができます。そうすると、dbx
は指定されたプロセス ID (pid) に対応する実行可能ファイルを自動的に見つけ出します。
"-
" を使用すると、それ以後run
コマンドおよびrerun
コマンドは機能しません。これは、dbx
が実行可能ファイルの絶対パス名を知らないためです。Sun WorkShop の「デバッグ」ウィンドウからは、実行中の子プロセスにも結合できます (Sun WorkShop オンラインヘルプの「dbx コマンドの使い方」の「実行中のプロセスの接続」を参照してください)。
exec
機能後のプロセス追跡子プロセスが新しいプログラムを
exec
(2) 関数を用いて実行すると、そのプロセス ID は変わりませんが、プロセスイメージは変化します。dbx
はexec()
の呼び出しを自動的に検知し、新しく実行されたプログラムを自動的に再読み込みします。実行可能ファイルの元の名前は、
$oprog
に保存されます。この名前に復帰するには、debug $oprog
を使用します。
fork
機能後のプロセス追跡
子プロセスが、関数
vfork()
、fork(1)
、またはfork(2)
を呼び出すと、プロセス ID が変化しますが、プロセスイメージは変化しません。dbxenv 環境変数follow_fork_mode
の設定値にしたがって、dbx
は次のように動作します。
イベントとの対話
exec()
関数やfork()
関数では、ブレークポイントや他のイベントが、すべて削除されます。しかし、dbx
環境変数follow_fork_inherit
をon
に設定するか、-perm eventspec
修飾子でイベントを持続イベントにすれば、ブレークポイントや他のイベントは削除されません。イベント仕様修飾子の使用方法の詳細については、第 6 章を参照してください。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |