1
我有以下問題:應用程序試圖調試導致崩潰[腐敗堆]
我有application.When我從它工作正常從命令行運行一個命令行,但是當我嘗試調試它我收到以下消息:
* Windows已觸發orb_app.exe中的斷點。這可能是由於堆損壞引起的,這表明orb_app.exe或它已加載的任何DLL中存在一個錯誤。*
該應用程序使用CORBA協議的omniORB實現與遠程應用程序進行交互。 編譯器:Microsoft C++ 2003 操作系統:Windows 2003
什麼可以是我無法調試我的應用程序的原因?
應用程序可能運行得很好,同時仍然會破壞堆。你爲什麼說你不能調試它?你有沒有嘗試跟蹤並修復堆腐敗?如果腐敗發生在一個不是你自己的DLL中,你是否檢查過是否用與沒有它的調試器相同的方式運行它(相同的命令行參數,相同的工作目錄)?是否有可能提供的字符串對您的某個DLL來說太長了?我曾經在一次corba實現中發生過這種情況,因爲我給它的主機名太長,所以它正在寫一個字符串的末尾。 – George
您是否正在從命令行運行調試版本或發行版本?調試版本包含各種檢查,這些檢查旨在檢測堆損壞等。在發佈版本中,您仍然有相同的錯誤,但是如果您的特定錯誤不會以使程序崩潰的方式損壞數據,您可能會(非)幸運。所以,如果你在調試器中看到這個錯誤 - 你有一個錯誤。在發佈中沒有看到它意味着它隱藏得很好 - 對於當前版本的代碼和數據。 – eran
當我嘗試調試它時,我在CORBA庫Send方法上發生了堆損壞。但是無法確定原因,因爲它可能會在第一次請求和第二次或第三次請求之後崩潰。我在debuger中使用了相同的參數,當我在沒有調試器的情況下從命令行運行它時。 –