dbx の assign コマンドは、exp の値を var に割り当てます。これを dbx で永続的に使用すると、var の値が変更され、プログラムが変更される可能性があります。
assign var = exp
dbx の pop コマンドは、スタックから 1 つまたは複数のフレームをポップ (解放) します。
カレントフレームをポップ |
pop |
num 個のフレームをポップ |
pop num |
指定のフレーム数までフレームをポップ |
pop -f num |
ポップされた呼び出しはすべて、再開時に再び実行されて、プログラムに望ましくない変更が加えられる可能性があります。pop は、ポップされた関数にローカルなオブジェクトのデストラクタも呼び出します。
call コマンドを dbx で使用すると、ある手続きが呼び出されて、その手続きは指定通りに実行されます。
call proc([params])
この手続きは、プログラムの一部を変更する可能性があります。dbx は、プログラムソースに呼び出しを組み込んだ場合と同様に、実際に呼び出しを行います。
print exp, ...
式に関数呼び出しがある場合は、call コマンドと同じ考慮事項が適用されます。C++ では、多重定義演算子による予期しない副作用にも注意する必要があります。
when event-specification [modifier] {cmd ... ;}
イベントが発生すると、cmd が実行されます。
ある行または手続きに到達すると、コマンドが実行されます。どのコマンドを出したかによって、プログラムの状態が変わる可能性があります。
fix を使用すると、プログラムに対して、実行中の変更を加えることができます。
fix
これは非常に便利なツールですが、fix は変更されたソースファイルを再コンパイルして、変更された関数をアプリケーションに動的にリンクすることに注意してください。
第 11 章「修正継続機能 (fix と continue)」を参照して、fix と continue の制限事項を必ず確認してください。
この dbx コマンドは、プログラムが実行される順序を変更します。実行を line で指定した行で続けられます。プログラムがマルチスレッド化されている場合は ID が必要です。
cont at line id
これにより、プログラムの結果が変更される可能性があります。