Oracle® Solaris Studio 12.4: dbxtool チュートリアル

印刷ビューの終了

更新: 2014 年 10 月
 
 

ブレークポイントスクリプトを使用してコードにパッチを適用する

ブレークポイントとステップ動作の使用法 で、空の行が NULL の最初のトークンを生成し、SEGV の原因となるバグを検出しました。エラーの回避策を使用できます。

  1. 前に作成したブレークポイントをすべて削除します。これをすばやく行うには、「ブレークポイント」ウィンドウを右クリックして「すべて削除」を選択します。

  2. 「実行可能ファイルをデバッグします」ダイアログボックスの <in 引数を削除します。

  3. interp.cc の 130 行目の行ブレークポイントを切り替えます。

    image:130 行目にブレークポイントが表示された「エディタ」ウィンドウ
  4. 「ブレークポイント」ウィンドウで、先ほど作成したブレークポイントを右クリックして「カスタマイズ」を選択します。

  5. 「ブレークポイントをカスタマイズ 」ダイアログボックスの、「条件 」フィールドで token == 0 と入力します。

  6. 「アクション」ドロップダウンリストから「スクリプトの実行 」を選択します。

  7. 「スクリプト 」フィールドで、assign token = line と入力します。


    注 -  dbx ではデバッグプロセスの dummy 文字列を割り当てることができないため、assign token = "dummy" にはできません。その一方で line"" に等しいことが知られています。

    ダイアログボックスは次のような画面になります。

    image:「カスタムブレークポイント」ダイアログボックス
  8. 「OK」をクリックします。

ここで、プログラムを実行して空の行を入力すると、クラッシュせずに、次の画面に示すような警告が表示されます。

image:「出力」ウィンドウ

dbxtool から dbx に送信されたコマンドを見れば、この回避策がより明確になる可能性があります。

when at "interp.cc":130 -if token == 0 { assign token = line; }