非常に簡単に言えば、C++ プログラムが次の関数を実行した場合 (たとえば、任意の VS バージョンでコンパイルされた Windows 7 で)、その後クラッシュし、WER を使用してデバッガーをアタッチするか、WER にクラッシュ ダンプを生成させ、後でこのクラッシュ ダンプを分析します。 .
ダンプ内の情報から、この関数が実行されたことを直接推測すること、つまり、この関数が実行されたことを実行したスレッドに関するトレースを見つけることは可能ですか?
または、スタック全体を破損すると、すべての実行トレースが失われますか?
void bye_bye_stack() {
int local = 42;
int* stackaddr = &local;
while(time(NULL) != NULL) { // prevent optimizations via call to time()
++stackaddr; // stack grows towards smaller addresses, so increasing the pointer will point to info we already put on the stack
*stackaddr = local; // destroy stack content
// program will (likely) crash here once we reach a read-only page
}
}