VC++6で、デバッグ中にトリガーポイントで止まって直後に、適当な関数をさし挟むことも出来
るのでしょうか?
時々、止めた後、一時的にfcloseや
Textout等を表示させたいこともあります。
>トリガーポイント
ブレークポイントのことスか?
>適当な関数をさし挟むことも出来るのでしょうか?
関数をひとつ差し込むくらいならエディット・コンティニューで対応できると思いま
す。
あまり大規模なコードを挿入すると、デバッグを中断してリコンパイルする必要が出て
くるかもしれません。
>デバッグ中にトリガーポイントで止まって直後に、適当な関数をさし挟むことも出来
>るのでしょうか
さしはさむの意味合いがコードを書き直して函数(かんすう、関数)を呼び出す
ことかどうかで答えが変わって来ると思います。実行コードをその場で書き直す
という意味なら、Win32 では実行コードの領域は読むことと実行することとが可能な
領域(プログラムの実行時には)としてあると思います。ですから予め何か仕掛けが
そのコードにないと出来そうに無いと思います
ただ、「Windows プログラマのためのデバッグテクニック」にはウォッチ
ウインドーで函数が呼べることが書いてあります
詳しいことはこの本等で調べてください
ほかにはソースを書き直すということならエディットコンティニューが使えるかも
知れません(私は使わないので詳しいことは google や MSDN 等でお調べください)
fclose() については何が目的なのか理解できないので何もお答えできませんが
TextOut() は何か表示したいということでしょうが、Windows アプリケーション
では再描画で描画しないものはウインドー上に(デバッガーからアプリケーションに
戻った時点でウィンドーの再描画が始まるので)反映できないと思います
MFC をお使いでしたら TRACE マクロでデバッグウインドーに表示できますが
それではだめなんでしょうか。又、ウォッチなどで変数の値は確認できますが
そういう事でもないのですか
それから、あなたのアプリケーションの設定(MFC の仕様の有無、
SDI,MDI,ダイアログベース、コンソールアプリかWindow アプリかなど)や
OS、VC++のバージョンなど忘れずに書いて下さい
こんな感じでやっていたことがあります。
何かの関数(...)
{
bool bForDebug=false;
...
あなたのいうトリガーポイントがここにあるとする。
if( bForDebug )
{
fclose(...);
TextOut(...);
bForDebug = false;
}
}
デバッグ中、途中で変数の値を変える事はできますから、特別な処理をしたくなったら
bForDebug の値をtrueに変えてからif文を実行すると、ifブロックの中を実行してくれます。
もちろん、リリース時にはこのような部分を削除するか、あらかじめ「#ifdef _DEBUG」
で括っておきます。