dbx コマンドによるデバッグ

コマンド参照

プログラムをデバッグする場合、以下に示す任意の例外処理コマンドを呼び出すことができます。

C++ テンプレートのコマンド

以下に示すコマンドは、テンプレートおよびインスタンス化されたテンプレートに使用します。クラスまたは型定義がわかったら、値の出力、ソースリストの表示、またはブレークポイントの設定を行うことができます。

whereis name

whereis は、関数テンプレートまたはクラステンプレートの、インスタンス化された関数やクラスの出現すべてのリストを出力するために使用します。

クラステンプレートの場合は、次のように入力します。


(dbx) whereis Array
クラステンプレートのインスタンス: 'Array<int>
クラステンプレートのインスタンス: 'Array<double>
クラステンプレート:     `sample`sample.cc`Array

関数テンプレートの場合は、次のように入力します。


(dbx) whereis square
関数テンプレート:       `sample`square

whatis name

関数テンプレートおよびクラステンプレートと、インスタンス化された関数やクラスの定義を出力するために使用します。

クラステンプレートの場合は、次のように入力します。


(dbx) whatis Array
template<class T> class Array ;
完全なテンプレート宣言を得るために次を実行してください:
															 'whatis -t Array<int>';

関数テンプレートの場合は、次のように入力します。


(dbx) whatis square
template<class C> void square(C num, C *result);

クラステンプレートのインスタンス化の場合は、次のように入力します。


(dbx) whatis -t Array<int>
class Array<int> {
public:
   int Array<int>::getlength();
   int &Array<int>::operator[](int i);
   Array<int>::Array<int>(int l);
   Array<int>::‾Array<int>();
private:
   int length;
   int *array;
};

stop inclass classname

テンプレートクラスのすべてのメンバー関数を停止するには、次のように入力します。


(dbx)stop inclass Array
(2) stop inclass Array

stop inclass を使用して、特定のテンプレートクラスのメンバー関数すべてにブレークポイントを設定します。


(dbx) stop inclass Array<int>
(2) stop inclass Array<int>

stop in function

stop in を使用して、あるテンプレートクラスのメンバー関数、またはテンプレート関数にブレークポイントを設定します。

インスタンス化されたクラステンプレートの場合は、次のように入力します。


(dbx) stop in Array<int>::Array<int>(int l)
(2) stop in Array<int>::Array<int>(int)

call function_name (parameters)

call は、スコープ内で停止した場合に、インスタンス化された関数またはクラステンプレートメンバー関数を明示的に呼び出すために使用します。dbx が正しいインスタンスを選択できない場合は、メニューを使用して正しいインスタンスを選択できます。


(dbx) call square(j,i)

print Expressions

print を使用して、インスタンス化された関数またはクラステンプレートメンバー関数を評価します。


(dbx) print iarray.getlength() 
iarray.getlength() = 5

print を使用して this ポインタを評価します。


(dbx) whatis this
class Array<int> *this; 
(dbx) print *this
*this = {   
	length = 5     
	array   = 0x21608 
}

list Expressions

list を使用して、指定のインスタンス化された関数のソースリストを出力します。


(dbx) list square(int, int*)