dbx コマンドによるデバッグ ホーム目次前ページへ次ページへ索引


付録 A

プログラム状態の変更

ここでは、dbx を使用しないでプログラムを実行する場合と比べながら、dbx で実行する際のプログラムまたはプログラムの動作を変更する dbx の使用法とコマンドについて説明します。プログラムに変更を加えるコマンドがどれかを理解する必要があります。

この付録は、次の各節から構成されています。

dbx のもとでプログラムを実行することの影響

アプリケーションは、dbx のもとで実行される場合、本来と動作が異なることがあります。dbx は被デバッグプログラムに対する影響を最小限に抑えようとはしますが、次の点に注意する必要があります。

あるいは、adb または truss を使用して実行した場合に同じ問題が起こるか確認してください。

dbx によって強いられる混乱を最小限に抑えるには、アプリケーションが自然な環境で実行されているときに dbx を接続するようにしてください。

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

assign コマンド

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

assign variable = expression

pop コマンド

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

pop カレントフレームをポップ
pop number number 個のフレームをポップ
pop -f number 指定のフレーム数までフレームをポップ


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

call コマンド

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

call proc([params]) 

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

print コマンド

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

print expression, ... 

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

when コマンド

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

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

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

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

fix コマンド

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

fix

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

第 11 章「修正継続機能 (fix と continue)」を参照して、fixcontinue の制限事項を必ず確認してください。

cont at コマンド

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

cont at line id

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


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引