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

プログラムの修正

ファイルを修正するには、次の手順に従ってください。

  1. 変更をソースファイルに保存します。

    この手順を忘れても、Sun WorkShop では自動的に変更が保存されます。

  2. dbx プロンプトで fix と入力します。

修正は無制限に行うことができますが、1 つの行でいくつかの修正を行った場合は、プログラムを作成しなおすことを考えてください。fix は、メモリー内のプログラムのイメージを変更しますが、ディスク上のイメージは変更しません。また修正を行うと、メモリーのイメージは、ディスク上のイメージと同期しなくなります。

fix は、実行可能ファイル内での変更ではなく、.o ファイルとメモリーイメージの変更だけを行います。プログラムのデバッグを終了したら、プログラムを作成しなおして、変更内容を実行可能ファイルにマージする必要があります。デバッグを終了すると、プログラムを作成しなおすように指示するメッセージが出されます。

修正後の続行

continue を使用すると、実行を続けることができます。

プログラムの実行を再開する前に、次の条件に注意する必要があります。

実行された関数への変更

すでに実行された関数に変更を加えた場合、その変更内容は次のことが起こるまで無効です。

変数への単純な変更以上のことを修正した場合は、fix に続けて run を使用してください。run を使用すると、プログラムの再リンクが行われないため処理が速くなります。

呼び出されていない関数への変更

呼び出されていない関数に変更を加えた場合、変更内容は、その関数が呼び出されたときに有効になります。

現在実行中の関数への変更

現在実行中の関数に変更を加えた場合、fix の影響は、変更内容が停止した関数のどの場所に関連しているかによって異なります。

現在スタック上にある関数への変更

停止された関数ではなく、現在スタック上にある関数に変更を加えた場合、変更されたコードは、その関数の現在の呼び出しでは使用されません。停止した関数から戻ると、スタック上の古いバージョンの関数が実行されます。

この問題を解決する方法はいくつかあります。

スタック上の修正された関数にブレークポイントがある場合、このブレークポイントは、新しいバージョンの関数に移動します。古いバージョンが実行される場合、プログラムはこれらの関数で停止しません。