掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
エラーを回避したいのです (ID:55037)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VSのバージョンがわかりませんが、とりあえずVS6で。 表示−デバッグウィンドウ−コールスタックでコールスタックウィンドウが表示されます。 ここには、ステップ実行などをおこなっている場合、その地点までの、 関数のコールされた順番が表示されます。 (厳密には少し違うのかな。上手く表現できない。。。) 例えば、FuncA()という関数の中で、別のFuncB()という関数をコールし、 さらにそのFuncB()の中で新たな別の関数FuncC()を呼んでいて、 現在ステップ実行で、そのFuncC()のコードのところに来ている場合、 だいてい、次のような感じにコールスタックウィンドウに表示されます。 ----ここから---- FuncC() FuncB() FuncA() ----ここまで---- これはあくまでかなり適当なれいですが、このコールスタックウィンドウを見ると、 現在はFuncC()という関数の中を実行しており、そのFuncC()は別のFuncB()という 関数の中からコールされており、さらにそのFuncB()はFuncA()の中からコールされている というのが分かります。 で、標準ライブラリの関数(例えばmemcpy())などで落ちた場合でも、 その関数がどこで呼ばれているかを順番に戻っていき、自分が作成した関数(コード) の部分がみつかったら、そのあたりが、バグの原因の可能性が高いです。 ここで、tetrapodさんが述べらているように、このコールスタックのところに、 自分で作成した関数名が全くでてこないようなら、このどの順番に関数がコールされているかを 記憶しているところ(コールスタック)自体がオーバフローなどにより、 破壊されていますので、その場合は、コールスタックを表示したまま、 地道にステップ実行を繰り返し、どの地点でコールスタックの表示がおかしくなるか、 確認して下さい。 #長文になり、あまり上手く説明できていないかもしれませんが、こんなもんで。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.