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

プログラムの状態を変更するコマンドの使用

以下のコマンドにより、プログラムを修正できる場合があります。

assign コマンド

assign コマンドは、expression の値を variable に割り当てます。dbx 内で使用すると variable の値が永久に変更されます。


assign variable = expression

pop コマンド

pop コマンドは、スタックから 1 つまたは複数のフレームをポップ (解放) します。

pop

カレントフレームをポップ

pop number

number 個のフレームをポップ

pop -f number

指定のフレーム数までフレームをポップ

ポップされた呼び出しはすべて、再開時に再び実行されて、プログラムに望ましくない変更が加えられる可能性があります。pop は、ポップされた関数にローカルなオブジェクトのデストラクタも呼び出します。

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

call コマンド

call コマンドを dbx で使用すると、ある手続きが呼び出されて、その手続きは指定どおりに実行されます。


call proc([params])

この手続きは、プログラムの一部を変更する可能性があります。dbx は、プログラムソースに呼び出しを組み込んだ場合と同様に、実際に呼び出しを行います。

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

print コマンド

式の値を出力するには、次のように入力します。


print expression, ...

式に関数呼び出しがある場合は、call コマンド」 と同じ考慮事項が適用されます。C++ では、多重定義演算子による予期しない副作用にも注意する必要があります。

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

when コマンド

when コマンドの一般的な構文は次のとおりです。


when event-specification [modifier] {command; ... }

イベントが発生すると、command が実行されます。

ある行または手続きに到達すると、コマンドが実行されます。どのコマンドを出したかによって、プログラムの状態が変わる可能性があります。

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

fix コマンド

fix コマンドを使用すると、プログラムに対して、実行中の変更を加えることができます。


fix

これは非常に便利なツールですが、fix は変更されたソースファイルを再コンパイルして、変更された関数をアプリケーションに動的にリンクすることに注意してください。

fix と cont の制限事項を必ず確認してください。「メモリーリーク (mel) エラー」を参照してください。

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

cont at コマンド

cont at コマンドは、プログラムが実行される順序を変更します。実行は指定された行で継続されます。line. id は、プログラムがマルチスレッドの場合に必要です。


cont at line [ id ]

これにより、プログラムの結果が変更される可能性があります。