デバッグ中に一時的に簡単な関数を差し挟みたい – プログラミング – Home

デバッグ中に一時的に簡単な関数を差し挟...
 
通知
すべてクリア

デバッグ中に一時的に簡単な関数を差し挟みたい


とえ
 とえ
(@とえ)
ゲスト
結合: 21年前
投稿: 1
Topic starter  

VC++6で、デバッグ中にトリガーポイントで止まって直後に、適当な関数をさし挟むことも出来
るのでしょうか?

時々、止めた後、一時的にfcloseや
Textout等を表示させたいこともあります。


引用解決済
トピックタグ
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

>トリガーポイント
ブレークポイントのことスか?

>適当な関数をさし挟むことも出来るのでしょうか?
関数をひとつ差し込むくらいならエディット・コンティニューで対応できると思いま
す。
あまり大規模なコードを挿入すると、デバッグを中断してリコンパイルする必要が出て
くるかもしれません。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>デバッグ中にトリガーポイントで止まって直後に、適当な関数をさし挟むことも出来
>るのでしょうか
さしはさむの意味合いがコードを書き直して函数(かんすう、関数)を呼び出す
ことかどうかで答えが変わって来ると思います。実行コードをその場で書き直す
という意味なら、Win32 では実行コードの領域は読むことと実行することとが可能な
領域(プログラムの実行時には)としてあると思います。ですから予め何か仕掛けが
そのコードにないと出来そうに無いと思います
ただ、「Windows プログラマのためのデバッグテクニック」にはウォッチ
ウインドーで函数が呼べることが書いてあります
詳しいことはこの本等で調べてください
ほかにはソースを書き直すということならエディットコンティニューが使えるかも
知れません(私は使わないので詳しいことは google や MSDN 等でお調べください)

fclose() については何が目的なのか理解できないので何もお答えできませんが
TextOut() は何か表示したいということでしょうが、Windows アプリケーション
では再描画で描画しないものはウインドー上に(デバッガーからアプリケーションに
戻った時点でウィンドーの再描画が始まるので)反映できないと思います
MFC をお使いでしたら TRACE マクロでデバッグウインドーに表示できますが
それではだめなんでしょうか。又、ウォッチなどで変数の値は確認できますが
そういう事でもないのですか

それから、あなたのアプリケーションの設定(MFC の仕様の有無、
SDI,MDI,ダイアログベース、コンソールアプリかWindow アプリかなど)や
OS、VC++のバージョンなど忘れずに書いて下さい


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

こんな感じでやっていたことがあります。

何かの関数(...)
{
  bool bForDebug=false;
  ...
  あなたのいうトリガーポイントがここにあるとする。
  if( bForDebug )
  {
    fclose(...);
    TextOut(...);
    bForDebug = false;
  }
}

デバッグ中、途中で変数の値を変える事はできますから、特別な処理をしたくなったら
bForDebug の値をtrueに変えてからif文を実行すると、ifブロックの中を実行してくれます。
もちろん、リリース時にはこのような部分を削除するか、あらかじめ「#ifdef _DEBUG」
で括っておきます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました