溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VC 程序崩潰異常處理集錦

發(fā)布時間:2020-05-27 18:36:51 來源:網(wǎng)絡(luò) 閱讀:1518 作者:fengyuzaitu 欄目:系統(tǒng)運維

1 Run-Time Check Failure: being used without being defined

場景

    將一個未曾初始化的結(jié)構(gòu)體作為參數(shù)傳遞給一個函數(shù),在運行時出現(xiàn)如上的錯誤,盡管沒有在函數(shù)中使用,但是依然需要進行結(jié)構(gòu)體的初始化,重申初始化的重要性

 

2 Run-Time Check Failure Stack around the variable'xxx'was corrupted

場景

        查找所有xxx的引用,仔細推敲任何一處可能導(dǎo)致的數(shù)組越界問題,經(jīng)常出現(xiàn)的情況:

1

   char szName[10] = {"hello,world"};

   char szCopy[8] = {0};

    strcpy(szCopy, szName);

2

   char szStr[2]= {0};

   sprintf(szStr, "%d", 12);

那么被寫入szStr的數(shù)據(jù)長度應(yīng)該為3(請不要忘記了'\0',char[2]是不夠的,會造成越界訪問

 

3 在已損壞了程序內(nèi)部狀態(tài)發(fā)生了緩沖區(qū)溢出

場景

   release版本啟用最大化速度O2,運行沒有問題。禁用優(yōu)化Od,情況下出現(xiàn)如下的錯誤:在已損壞了程序內(nèi)部狀態(tài)的test.exe中發(fā)生了緩沖區(qū)溢出。該問題并不是在執(zhí)行代碼的時候,出現(xiàn)的問題,而是在程序退出,系統(tǒng)進行清理的時候出現(xiàn)的問題。此時調(diào)用的堆棧終端在一下的代碼:中斷在gs_report.c文件的298行位置(_CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE),如下:

   

#if defined(_CRTBLD) && !defined(_SYSCRT)

   DebuggerWasPresent = IsDebuggerPresent();

  _CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);

#endif

    并不是在執(zhí)行用戶代碼的時候出現(xiàn)的異常。

 

解決思路

    從后往前屏蔽代碼,尋找引起問題的根源。

 

問題根源

    定位到在棧上生成一個類的對象,就會導(dǎo)致該問題。sizeof該類,長度值是1257,功能是大數(shù)據(jù)的搜索,是該類導(dǎo)致棧溢出了,所以使用動態(tài)new對象的方式解決了該問題。

  

4 unresolved external symbol __ImageBase

errorLNK2001: 無法解析的外部符號___ImageBase        LIBCMT.lib

errorLNK2001: 無法解析的外部符號___ImageBase        LIBCMT.lib

解決

    項目平臺:Win32

    在鏈接器>>系統(tǒng)>>子系統(tǒng)中選擇了WindowsCE(/SUBSYSTEM:WINDOWSCE)

應(yīng)該是Windows(/SUBSYSTEM:WINDOWS)

5 this application has requested the runtime to terminateit in an unusual way

程序崩潰彈窗this application has requested the runtime to terminate it inan unusual way.

 

please contact the aplication's supportteam for more information

 

嘗試方案

cd %windir%\system32

Regsvr32 Msxml3.dll


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI