簡體   English   中英

我的C ++應用程序僅在發布模式和Windows 7中崩潰

[英]My C++ App Crashes Only in Release Mode and Windows 7

我對Windows 7上的發布模式中的應用程序崩潰感到非常沮喪。

在main函數中,我刪除了所有內容:

int main(int argc, char **argv, char **envp) {
    return (0);
}

但是我確實有許多在主要功能之外定義的指令,變量和函數。

它只在Windows 7的發布模式下崩潰。在Windows 7上的調試模式是可以的; Windows XP上的調試和發布模式都可以。

既然我不能調試,我不該做什么。

錯誤是:

Unhandled exception at 0x00dc21ca in MyApp.exe: 0xC0000005: Access violation reading location 0x8496a9bb.

流水線:

00DC21CA  mov         eax,dword ptr [edx+0Ch] 

這太瘋狂了,請幫忙。

彼得

PS:如果我刪除了我在主要部分之外定義的所有內容,那么它沒關系。

PS:

char* AllocArgsMemory()
{
    return (char*)malloc(2); // works: return NULL
                             // So it seems the malloc has some problems
}

檢查您正在使用的所有指針。 它們的應用程序崩潰方式表明您正在取消引用空指針或在預先分配的內存范圍之外(例如數組)。 這可能是由於未經初始化的指針或訂閱索引太大。

它在調試模式下不會崩潰,因為在調試模式下,調試器通常會在未初始化的內存中使用預定義的值,例如0xcccccccc,這在發布模式下不會發生。

即使它是一個發布二進制文件,你也應該創建一個完整的符號文件(.pdb),這樣你就可以在出現問題時擁有​​一個不錯的callstack。 為了得到它:啟動任何調試器(WinDbg,Visual Studio等),設置它以停止訪問沖突異常,開始使用它進行處理,它應該在異常發生時中斷並給你一個callstack。 請記住,調試器可以運行任何可以執行的操作; 即使您沒有源代碼和局部變量值的鏈接,您也可能有其他有用的信息。

希望能幫助到你。

聽起來它可能是一些內置的設置/屬性。 我沒有太多東西可以提供給你(部分是因為缺乏信息),但如果它在Windows 7中以DEBUG模式工作,就像在RELEASE中設置所有構建設置/屬性一樣與DEBUG相同。 如果它有效,您知道它是構建設置的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM