• <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>
            隨筆-341  評論-2670  文章-0  trackbacks-0
                本來昨天搞定了異常處理之后決定狂喜一天,誰知道今天用release編譯了一下之后竟然掛了!資料找了半天發(fā)現(xiàn)是Windows XP之后提供的一項保護SAFESEH搞的鬼。于是需要將自己的異常處理函數(shù)添加進PE頭的SAFESEH列表中。方法如下:

                添加一個asm文件,寫如下內(nèi)容:
            1 .386
            2 .model  flat
            3 
            4 VL_JIT_X86_EXCEPTION_HANDLER proto
            5 .safeseh VL_JIT_X86_EXCEPTION_HANDLER
            6 
            7 end

                然后在這個文件的屬性里面添加命令行/safeseh,并將函數(shù)在代碼中做成extern "C"就可以了:
             1 /*******************************************************************************
             2 Vczh Library++ 2.0
             3 JIT::X86匯編異常處理器
             4 開發(fā)者:陳梓瀚
             5 
             6 接口:
             7 類:
             8 函數(shù):
             9 *******************************************************************************/
            10 
            11 #ifndef VL_JIT_x86EXCEPTIONHANDLER
            12 
            13 #include <windows.h>
            14 
            15 extern "C"
            16 {
            17     EXCEPTION_DISPOSITION __cdecl VL_JIT_X86_EXCEPTION_HANDLER
            18     (
            19         struct _EXCEPTION_RECORD *ExceptionRecord,
            20         void * EstablisherFrame,
            21         struct _CONTEXT *ContextRecord,
            22         void * DispatcherContext
            23         );
            24 }
            25 
            26 #define VL_JIT_x86EXCEPTIONHANDLER
            27 #endif

                這兩部合起來就成功將自己的異常處理函數(shù)標記成安全的了。

                繼續(xù)狂喜。
            posted on 2009-03-04 08:40 陳梓瀚(vczh) 閱讀(1907) 評論(2)  編輯 收藏 引用 所屬分類: JIT

            評論:
            # re: JIT腳本引擎:關(guān)于自己的異常處理函數(shù)在Release下失效的解決辦法 2009-03-04 19:56 | ai
            請問這種異常機制是否能捕獲到堆棧溢出的問題,比如
            memcpy時,長度寫成-1,這樣就會堆棧溢出,現(xiàn)象就是進程消失,try不起作用!現(xiàn)在暫時用windbg掛上他,等出問題題時截住他!不知道是否還有別的好的方法?多謝  回復  更多評論
              
            # re: JIT腳本引擎:關(guān)于自己的異常處理函數(shù)在Release下失效的解決辦法 2009-03-04 21:28 | 陳梓瀚(vczh)
            @ai
            這種方法就是try的方法。try不起作用【可能】是因為你catch那里需要用到堆棧,結(jié)果不行,重復拋異常。  回復  更多評論
              
            老司机午夜网站国内精品久久久久久久久 | 97久久久精品综合88久久| 青草国产精品久久久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲日韩欧美一区久久久久我 | 久久久久99这里有精品10| 久久青青草原精品国产| 久久久久久毛片免费看| 国产91色综合久久免费分享| 亚洲国产成人久久综合一区77| 久久久亚洲欧洲日产国码二区| 大美女久久久久久j久久| 欧美日韩精品久久久久| 国内精品久久久久久野外| 亚洲午夜久久久久妓女影院 | 伊人久久大香线蕉成人| 狠狠色丁香婷综合久久| 欧美大香线蕉线伊人久久| 国产午夜电影久久| 国产亚洲色婷婷久久99精品| 国产精品综合久久第一页| 好属妞这里只有精品久久| 久久久久亚洲Av无码专| 久久久久久久久久久久久久| 午夜精品久久久内射近拍高清| 久久精品无码av| 999久久久免费国产精品播放| 久久久久久人妻无码| 久久久久亚洲AV成人片| 99久久精品国产一区二区| 亚洲中文字幕久久精品无码APP| 久久精品国产亚洲AV蜜臀色欲| 国产精品成人无码久久久久久| 久久91精品国产91久久小草| 久久久久久九九99精品| 国产精品久久国产精品99盘 | 久久妇女高潮几次MBA| 国产—久久香蕉国产线看观看| 久久久久人妻精品一区三寸蜜桃| 久久精品国产亚洲av瑜伽| 亚洲欧美国产精品专区久久|