watch のバグ回避2007年01月19日 12時57分51秒

以前に debug にバグがあるのは書いた。未だに Stratus から完全に修正されたとの連絡は無いみたいなので、まだ存在するとは思う。

少し前に、デバッガに関するバグが一つ修正されたと耳にしたが、詳細は忘れてしまった。

watch はあるメモリ領域が修正されるときに、プログラムを停止させるコマンドだが、運が良ければ動作する時もあると教わった。

  1. まず、watch が必要になる直前に break を設定しする。この時、break が掛かるのが遅ければ遅い程良い。
  2. そのあと、clear -all で全ての break を消す。break ポイントが残っていると、watch が暴走する。
  3. continue または restart。
  4. 運が良ければ、watch が動作する。
  5. この時に使えるコマンドは、source、args、trace などの変数を覗くコマンドのみ。これらのコマンドも、スタックが破壊されていると、おかしくなることもある。
  6. continue などをすると、二度と返ってこないので、絶対にしてはならない。

確かにうまくいくこともあった。

前回