码迷,mamicode.com
首页 > Windows程序 > 详细

WIN32堆栈恢复

时间:2014-08-05 19:40:30      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:io   文件   for   ar   window   res   file   windows   

#include <stdio.h>
#include <windows.h>

void die_recursion()
{
	static unsigned long s=-1;
	printf("递归%lu次\n",++s);
	die_recursion();
}


/*
Return:
异常被忽略,控制流将在异常出现的点之后,继续恢复运行。
EXCEPTION_CONTINUE_EXECUTION (-1) 

异常不被识别,也即当前的这个__except模块不是这个异常错误所对应的正确的异常处理模块。
系统将继续到上一层的try-except域中继续查找一个恰当的__except模块。
EXCEPTION_CONTINUE_SEARCH (0)  

异常已经被识别,也即当前的这个异常错误,系统已经找到了并能够确认,
这个__except模块就是正确的异常处理模块。控制流将进入到__except模块中。
EXCEPTION_EXECUTE_HANDLER (1) 
*/
int get_seh_info(int seh_code)
{
	if(seh_code == STATUS_STACK_OVERFLOW)
	{
		printf("文件:%s<发生堆栈上溢>\n",__FILE__);
		return EXCEPTION_EXECUTE_HANDLER ;
	}
	else
	{
		return EXCEPTION_CONTINUE_SEARCH;
	}
}


int main()
{
	int i=0;
	for(i = 0; i < 10 ;i++)//调用死递归10次
	{
		__try
		{
			die_recursion();//死递归
		}
		__except(get_seh_info( GetExceptionCode() ) )
		{
			if( _resetstkoflw() )
			{
				printf("恢复堆栈成功\n");
			}
			else
			{
				printf("恢复堆栈失败\n");
			}
		}
	}
	return 0;
}


WIN32堆栈恢复,布布扣,bubuko.com

WIN32堆栈恢复

标签:io   文件   for   ar   window   res   file   windows   

原文地址:http://my.oschina.net/mlgb/blog/298229

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!