Oracle® Solaris Studio 12.4: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2015 年 1 月
 
 

実際に使用されるシンボルを決定する

which コマンドは、ユーザーが式の中でその名前を完全に修飾しないで指定した場合に dbx が指定された名前を持つどのシンボルを使用するかを表示します。例:

(dbx) func
wedge::wedge(char*, int, int, const point&, load_bearing_block*)
(dbx) which draw
`block_draw.cc`wedge::draw(unsigned long)

指定されたシンボル名が局所的なスコープ内に存在しない場合、which コマンドは、そのシンボルの最初の出現をスコープ決定検索パスに沿って検索します。決定パスで最初に見つかった名前の完全修飾名が示されます。

検索パスに沿ったいずれかの場所で同じスコープレベルにある symbol の複数の出現が検索された場合、dbx は、あいまいさを報告するメッセージをコマンドペインに出力します。

(dbx) which fid
More than one identifier `fid’.
Select one of the following:
 0) Cancel
 1) `example`file1.c`fid
 2) `example`file2.c`fid

dbx は、あいまいなシンボル名をリストで示し、多重定義であることを表示します。which コマンドのコンテキストでシンボル名のリストから特定のシンボルを選んでも、dbx またはプログラムの状態には影響しません。どのシンボルを選んでも名前が表示されるだけです。

which コマンドは、ある symbol (この例の場合は block) をコマンド (たとえば、print コマンド) のターゲットにした場合に何が起こるかを前もって示すものです。あいまいな名前を指定して、多重定義が表示された場合は、該当する複数の名前のうちのどれを使用するかがまだ特定されていません。dbx は該当する名前を列挙し、ユーザーがそのうちの 1 つを選択するまで待機します。 dbx は該当する名前を列挙し、ユーザーがそのうちの 1 つを選択するまで待機します。