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

印刷ビューの終了

更新: 2016 年 6 月
 
 

コードへの移動

デバッグしているプログラムが停止するたびに、dbx は、その停止位置に関連付けられたソース行を出力します。プログラムが停止するたびに、dbx は、現在の関数の値をそのプログラムが停止した関数の値に再設定します。プログラムの停止後、その停止場所以外の関数やファイルを一時的に表示することができます。プログラムに含まれるすべての関数またはファイルを表示できます。移動によって、現在のスコープが設定されます (プログラムスコープを参照)。 これは、stop at ブレークポイントをいつ、どのようなソース行で設定するかを判定するために役立ちます。

ファイルの内容を表示する

dbx がプログラムの一部として認識するファイルであれば、モジュールまたはファイルが -g オプションでコンパイルされていない場合でも、どのファイルにも移動できます。ファイルに移動するには、次のように入力します。

(dbx) file filename

file コマンドを引数なしで使用すると、現在移動しているファイル名がエコー表示されます。

(dbx) file

dbx は、行番号を指定しないと、最初の行からファイルを表示します。

(dbx) file filename ; list line-number

詳細については、ソースコードの行へのブレークポイントの設定を参照してください。

関数への移動

func コマンドを使用すると、関数を表示できます。コマンド func に続けて、関数名を入力します。例:

(dbx) func adjust-speed

func コマンドを引数なしで使用すると、現在表示中の関数が表示されます。

詳細については、func コマンドを参照してください。

あいまいな関数名をリストから選択する (C++)

あいまいな名前または多重定義された関数名を持つ C++ メンバー関数に移動しようとすると、多重定義された名前を持つすべての関数を示すリストが表示されます。表示したい関数の番号を入力します。関数が属している特定クラスを知っている場合は、クラス名と関数名を入力できます。例:

(dbx) func block::block

複数存在する場合の選択

同じスコープレベルから複数のシンボルにアクセスできる場合、dbx は、あいまいさについて報告するメッセージを出力します。

(dbx) func main
(dbx) which C::foo
More than one identifier ’foo’.
Select one of the following:
 0) Cancel
 1) ”a.out”t.cc”C::foo(int)
 2) ”a.out”t.cc”C::foo()
>1
”a.out”t.cc”C::foo(int)

which コマンドのコンテキストでは、出現リストから選択しても、dbx またはプログラムの状態には影響を与えません。 どのシンボルを選んでも名前が表示されるだけです。

ソースリストの出力

ファイルまたは関数のソースリストを出力するには、list コマンドを使用します。 ファイルを検索したあと、list コマンドは、上から number 行を出力します。デフォルトは 10 行です。関数を検索したあと、list コマンドはその行を出力します。

詳細については、list コマンドを参照してください。

呼び出しスタックの操作によってコードを表示する

動作中のプロセスが存在するときにコードに移動する別の方法として、「呼び出しスタックの移動」、つまりスタックコマンドを使用して、現在アクティブなすべてのルーチンを表す呼び出しスタック上に現在存在する関数を表示する方法があります。スタックを操作すると、現在の関数とファイルは、スタック関数を表示するたびに変更されます。停止位置はスタックの「一番下」にあると見なされるため、そこから離れるには up コマンドを使用します。つまり、main または begin 関数に向けて移動します。現在のフレーム方向へ移動するには、down コマンドを使用します。

詳細については、スタックを移動してホームに戻るを参照してください。