很简单地说,如果 C++ 程序执行以下函数(例如,在 Windows 7 上,使用任何 VS 版本编译),然后随后崩溃并且您使用 WER 附加调试器,或者让 WER 生成故障转储并稍后分析此故障转储.
是否可以从dump中的信息,直接推断出这个函数被执行了,也就是说,找到执行它的线程的踪迹,就知道这个函数被执行了。
或者当我破坏整个堆栈时,所有执行痕迹都消失了吗?
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
}
}