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

fix と continue の働き

fix コマンドを適用する前に、エディタでソースを編集する必要があります。ソースファイルを変更した後、fix と入力します。

fix が実行されると、dbx は適切なコンパイラオプションでコンパイラを呼び出します。変更後のファイルがコンパイルされ、一時共有オブジェクト (.so) ファイルが作成されます。古いファイルと新しいファイルとを比較することによって、修正の安全性を検査する意味上のテストが行われます。

実行時リンカーを使用して新しいオブジェクトファイルが動作中のプロセスにリンクされ、プログラムカウンタが古い関数から新しい関数の同じ行に移動します (その関数が修正中のスタックの 1 番上にある場合)。さらに、古いファイルのブレークポイントがすべて新しいファイルに移動します。

対象となるファイルがデバッグ情報つきでコンパイルされているかどうかに関わらず、fixcontinue を実行できます。ただし、デバッグ情報なしでコンパイルされているファイルの場合には多少の機能制限があります。詳細はコンパイラの -g オプションの説明を参照してください。

共有オブジェクト (.so) ファイルの修正は可能ですが、その場合、そのファイルを特別なモードでオープンする必要があります。dlopen の呼び出しで、RTLD_NOW|RTLD_GLOBAL または RTLD_LAZY|RTLD_GLOBAL のどちらかを使用します。