青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

VS2005中SetUnhandledExceptionFilter函數應用

很多軟件通過設置自己的異常捕獲函數,捕獲未處理的異常,生成報告或者日志(例如生成mini-dump文件),達到Release版本下追蹤Bug的目的。但是,到了VS2005(即VC8),MicrosoftCRTC運行時庫)的一些與安全相關的代碼做了些改動,典型的,例如增加了對緩沖溢出的檢查。新CRT版本在出現錯誤時強制把異常拋給默認的調試器(如果沒有配置的話,默認是Dr.Watson),而不再通知應用程序設置的異常捕獲函數,這種行為主要在以下三種情況出現。

1       調用abort函數,并且設置了_CALL_REPORTFAULT選項(這個選項在Release版本是默認設置的)。

2       啟用了運行時安全檢查選項,并且在軟件運行時檢查出安全性錯誤,例如出現緩存溢出。(安全檢查選項 /GS 默認也是打開的)

3       遇到_invalid_parameter錯誤,而應用程序又沒有主動調用

_set_invalid_parameter_handler設置錯誤捕獲函數。

所以結論是,使用VS2005VC8)編譯的程序,許多錯誤都不能在SetUnhandledExceptionFilter捕獲到。這是CRT相對于前面版本的一個比較大的改變,但是很遺憾,Microsoft卻沒有在相應的文檔明確指出。

解決方法

       之所以應用程序捕獲不到那些異常,原因是因為新版本的CRT實現在異常處理中強制刪除所有應用程序先前設置的捕獲函數,如下所示:

 /* Make sure any filter already in place is deleted. */

 SetUnhandledExceptionFilter(NULL);

 UnhandledExceptionFilter(&ExceptionPointers);

解決方法是攔截CRT調用SetUnhandledExceptionFilter函數,使之無效。在X86平臺下,可以使用以下代碼。

#ifndef _M_IX86

       #error "The following code only works for x86!"

#endif

 

void DisableSetUnhandledExceptionFilter()

{

    void *addr = (void*)GetProcAddress(LoadLibrary(_T("kernel32.dll")),

                                                         "SetUnhandledExceptionFilter");

    if (addr)

    {

              unsigned char code[16];

              int size = 0;

              code[size++] = 0x33;

              code[size++] = 0xC0;

              code[size++] = 0xC2;

              code[size++] = 0x04;

              code[size++] = 0x00;

 

               DWORD dwOldFlag, dwTempFlag;

              VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);

              WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);

              VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);

       }

}

在設置自己的異常處理函數后,調用DisableSetUnhandledExceptionFilter禁止CRT設置即可。

其它討論

       上面通過設置api hook,解決了在VS2005上的異常捕獲問題,這種雖然不是那么“干凈”的解決方案,確是目前唯一簡單有效的方式。

       雖然也可以通過_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT), signal(SIGABRT, ...), _set_invalid_parameter_handler(...) 解決(1)(3),但是對于(2),設置api hook是唯一的方式。

 

posted on 2009-10-21 18:47 肥仔 閱讀(5708) 評論(3)  編輯 收藏 引用 所屬分類: 調試

評論

# re: VS2005中SetUnhandledExceptionFilter函數應用  回復  更多評論   

好文,多謝!
2012-05-30 11:50 | 游客

# re: VS2005中SetUnhandledExceptionFilter函數應用  回復  更多評論   

我試過了,還是不行啊。
比如:
vector<int> v;
v.at(0);//這種異常就捕獲不到啊
2013-04-24 13:03 | 永遇樂

# re: VS2005中SetUnhandledExceptionFilter函數應用  回復  更多評論   

不好意思,是我寫的代碼有問題@永遇樂
2013-04-24 15:04 | 永遇樂
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            黄色一区二区在线| 校园激情久久| 亚洲小少妇裸体bbw| 亚洲激情小视频| 亚洲欧洲在线免费| 亚洲一区二区三区四区中文| 亚洲欧美日韩一区二区| 久久激情综合网| 欧美不卡视频一区| 亚洲美女淫视频| 亚洲综合第一| 免费亚洲电影| 国产精品美女久久久免费| 国产女人18毛片水18精品| 永久域名在线精品| 亚洲天堂成人| 老牛嫩草一区二区三区日本| 最新成人在线| 一区二区三区蜜桃网| 久久久7777| 欧美日韩精品伦理作品在线免费观看 | 久久久久九九视频| 欧美日韩精品系列| 精品999网站| 亚洲在线观看免费| 欧美激情欧美激情在线五月| 亚洲一区二区视频| 欧美—级a级欧美特级ar全黄| 国产日韩在线播放| 亚洲天堂偷拍| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲四色影视在线观看| 欧美福利在线| 国内精品久久久| 亚洲欧美亚洲| 日韩手机在线导航| 乱中年女人伦av一区二区| 国产日韩欧美综合在线| 在线亚洲伦理| 亚洲经典在线看| 噜噜噜久久亚洲精品国产品小说| 国产精品天美传媒入口| 亚洲视频国产视频| 亚洲美女黄网| 欧美日韩www| 亚洲欧美激情四射在线日 | 亚洲黄色免费网站| 久久久午夜电影| 新狼窝色av性久久久久久| 国产精品久久毛片a| 一区二区三区国产在线观看| 亚洲精品中文字幕女同| 国产精品国产馆在线真实露脸| 精品成人国产| 久久久久青草大香线综合精品| 亚洲视频中文字幕| 国产精品豆花视频| 亚洲欧美电影在线观看| 中文在线资源观看网站视频免费不卡 | 久久成人人人人精品欧| 国产人成一区二区三区影院| 午夜精品久久| 亚洲综合社区| 国产欧美日韩一区二区三区在线| 亚洲影院免费| 亚洲免费在线播放| 国产精品综合av一区二区国产馆| 亚洲欧美日韩精品在线| 亚洲性感美女99在线| 国产精品一区二区三区观看| 欧美在线观看你懂的| 欧美专区在线播放| 有码中文亚洲精品| 亚洲第一区色| 欧美日韩激情网| 久久av资源网| 久久综合九色| 亚洲网址在线| 欧美专区在线观看| 亚洲伦理久久| 亚洲欧美日韩专区| 亚洲国产精品电影在线观看| 亚洲精品永久免费精品| 国产精品制服诱惑| 欧美国产精品劲爆| 国产精品成人一区二区三区吃奶| 欧美伊久线香蕉线新在线| 久久久91精品国产| 在线一区二区三区四区五区| 欧美一区二区三区视频在线| 91久久亚洲| 亚洲一区观看| 亚洲精品乱码久久久久久按摩观| 在线亚洲自拍| 91久久久久久国产精品| 亚洲自拍偷拍一区| 99热这里只有成人精品国产| 香蕉av777xxx色综合一区| 亚洲美女毛片| 久久久99爱| 亚洲欧美国产精品专区久久| 免费av成人在线| 欧美永久精品| 欧美午夜在线| 欧美激情精品久久久久久蜜臀| 亚洲电影成人| 久久一区国产| 国产精品高潮呻吟| 欧美电影免费观看高清| 国产精品久久毛片a| 欧美成人免费大片| 国产视频一区在线| 日韩亚洲一区二区| 亚洲国产精品悠悠久久琪琪| 亚洲欧美日韩精品久久奇米色影视| 亚洲第一黄网| 久久xxxx精品视频| 性欧美xxxx视频在线观看| 欧美片在线播放| 欧美成人四级电影| 韩国成人理伦片免费播放| 亚洲综合欧美| 欧美一区二区三区四区高清| 欧美特黄一级大片| 99re热这里只有精品视频| 亚洲人成在线播放| 美女视频网站黄色亚洲| 女女同性精品视频| 一区二区亚洲精品| 久久久免费av| 久久在线视频在线| 好吊色欧美一区二区三区四区| 亚洲免费视频一区二区| 午夜伦欧美伦电影理论片| 国产精品美女久久久浪潮软件| 亚洲婷婷在线| 欧美伊人久久久久久午夜久久久久 | 久久亚洲风情| 女生裸体视频一区二区三区| 一区在线免费观看| 玖玖国产精品视频| 91久久精品美女高潮| 一本久久a久久免费精品不卡| 欧美精品情趣视频| av不卡在线看| 久久福利毛片| 亚洲欧洲日韩综合二区| 欧美精品在线网站| 一区二区三区四区五区视频| 亚洲欧美日韩国产成人| 国产日韩欧美精品综合| 久久综合国产精品| 日韩视频免费在线| 香蕉久久一区二区不卡无毒影院| 国产欧美日韩激情| 农村妇女精品| 亚洲在线观看免费| 麻豆九一精品爱看视频在线观看免费 | 欧美69视频| av不卡在线看| 久久久视频精品| 亚洲精品视频免费| 国产精品分类| 久久久久久亚洲精品杨幂换脸| 91久久午夜| 欧美一区激情| 亚洲高清视频在线| 国产精品久久777777毛茸茸| 男同欧美伦乱| 欧美一区二区在线| 免费不卡亚洲欧美| 日韩一本二本av| 国产欧美一二三区| 免费欧美日韩| 亚洲一区在线观看免费观看电影高清| 久久精品国产999大香线蕉| 91久久久久久久久| 国产亚洲精品7777| 欧美精品高清视频| 久久成人免费电影| 一区二区三区四区精品| 欧美阿v一级看视频| 欧美亚洲一区在线| 99精品久久久| 激情亚洲网站| 国产精品日本欧美一区二区三区| 米奇777在线欧美播放| 亚洲永久精品国产| 99pao成人国产永久免费视频| 久久久噜噜噜久噜久久| 亚洲欧美一区二区三区久久| 99国产精品99久久久久久| 激情av一区二区| 国产美女精品视频免费观看| 欧美日韩国产一区精品一区| 噜噜爱69成人精品| 久久综合狠狠综合久久综青草| 欧美一区=区| 午夜视频精品| 午夜影院日韩|