<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>风中的流沙</title><link>http://blog.vckbase.com/flowsand/</link><description>萋萋少年讨江湖，亦真亦幻总虚度。风卷流沙落天涯，缘起缘灭任追逐。</description><managingEditor>风中的流沙</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>风中的流沙</dc:creator><title>SetUnhandledExceptionFilter 错误地址到日志</title><link>http://blog.vckbase.com/flowsand/archive/2009/09/09/38418.html</link><pubDate>Wed, 09 Sep 2009 05:23:00 GMT</pubDate><guid>http://blog.vckbase.com/flowsand/archive/2009/09/09/38418.html</guid><wfw:comment>http://blog.vckbase.com/flowsand/comments/38418.html</wfw:comment><comments>http://blog.vckbase.com/flowsand/archive/2009/09/09/38418.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blog.vckbase.com/flowsand/comments/commentRss/38418.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/flowsand/services/trackbacks/38418.html</trackback:ping><description>&lt;P&gt;LONG WINAPI MyUnFilterA (struct _EXCEPTION_POINTERS *lpExceptionInfo)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;static int s_SigCount = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;DWORD dwExceptCode = lpExceptionInfo -&amp;gt; ExceptionRecord -&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExceptionCode;&lt;BR&gt;&amp;nbsp;LONG&amp;nbsp; lResult;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if (dwExceptCode == EXCEPTION_ACCESS_VIOLATION)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;printf ("access violation caught by MyUnFilter\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;DWORD nThreadId = GetCurrentThreadId();&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;DWORD nProcessId = GetCurrentProcessId(); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;_EXCEPTION_POINTERS *p = lpExceptionInfo;&lt;BR&gt;&amp;nbsp;&amp;nbsp;CString err;&lt;BR&gt;&amp;nbsp;&amp;nbsp;err.Format( "Unknown WIN32 exception:%d at address 0x%.8x &amp;lt;ThreadId:%d, ProcessId:%d&amp;gt;",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;p-&amp;gt;ExceptionRecord-&amp;gt;ExceptionCode,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;p-&amp;gt;ExceptionRecord-&amp;gt;ExceptionAddress,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nThreadId,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nProcessId ); &lt;BR&gt;&amp;nbsp;&amp;nbsp;//MessageBox( 0,err,_T("error"),MB_OK ); //test only&lt;BR&gt;&amp;nbsp;&amp;nbsp;//WriteLogFile(...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;++s_SigCount;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// test case to keep this from going on forever (since we're not&lt;BR&gt;&amp;nbsp;&amp;nbsp;// fixing the AV)&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (s_SigCount &amp;lt; 5)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lResult = EXCEPTION_CONTINUE_EXECUTION;&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lResult = EXCEPTION_EXECUTE_HANDLER;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;lResult = EXCEPTION_CONTINUE_SEARCH;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;return lResult;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void CDlgDlg::OnButton1() &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;//编译后直接运行 EXE 有效果&lt;BR&gt;&amp;nbsp;SetUnhandledExceptionFilter (MyUnFilterA);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;char* p = NULL;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;strcpy( p, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/flowsand/aggbug/38418.html" width = "1" height = "1" /&gt;</description></item></channel></rss>