2017-03-23 96 views
0

我正在嘗試將之前版本的C++ Builder中完成的項目移至10.1柏林(我正在使用C++ Builder的試用版)。C++ Builder:程序異常終止。如何調查?

該項目被轉換並以最小的努力succefully編譯。然後,我得到了衆所周知的鏈接器LME288問題,但它是通過以管理員身份啓動C++ Builder來解決的。

但是現在,當我啓動應用程序,我得到一個消息框,說「異常程序終止」在開始的時候 - 甚至在屏幕上顯示的主窗口。

的情況是調試相同,釋放的版本,在IDE和獨立。當我在IDE內部啓動程序並在第一條語句中設置斷點時,錯誤消息出現在此語句之前。

我有Windows 10 Pro,64位。 C++ Builer 10.1柏林試用版。它顯示唯一可訪問的平臺是Win32,但我不知道這是否是錯誤的原因。該程序適用於以前的版本。

有人能告訴我該怎麼做嗎?有沒有系統的方法來調查這個問題?

我已經嘗試了所有的建議,我可以發現 - 使用調試器,向我們展示代碼,請嘗試重新安裝軟件或Windows,升級到最新的更新等,但我從來沒有見過一個系統的方法。

+0

當您在調試器中運行項目時,它實際顯示了什麼?你的斷點在執行過程中顯然已經太晚了,但是調試器仍然應該看到失敗發生,特別是報告失敗的內存地址,讓你調試進程,查看調用堆棧,CPU寄存器等。 main()'/'WinMain()'不是EXE運行的第一個代碼。 –

+0

@Remy我的錯誤 - 看起來我按下了「Run without debugger」(綠色箭頭)而不是Run。現在我看到調試器的注意事項:「項目引發的異常類EReadError帶有消息'Error Reading TreeView.Indent:System Error。Code:1410. Class already exists'。 儘管如此,仍然不明白原因。從舊到新項目的自動轉換是不正確的,是否有可能考慮到編譯和鏈接成功? – Ali58

+0

這個錯誤沒有意義。EReadError是一個DFM流錯誤,但Indent屬性只是一個整數,它不應該做類的任何事情,而錯誤1410是'ERROR_CLASS_ALREADY_EXISTS',這不是DFM流式系統會拋出的東西,因爲它不在流中註冊類。再次,我建議你使用調試器查看調用堆棧並查找導致錯誤的代碼 –

回答

0

這是我爲了讓我的項目工作而必須做的一些事情。

1)開始一個新項目。由於某些原因,舊項目可能會損壞併產生奇怪的錯誤。我建議開始一個新項目並將文件添加到它。 2)使用舊版本的borlndmm.dll隨C++ Builder 10提供的版本爲我製作了沒有意義的崩潰。我使用XE6或XE8的副本覆蓋了borlndmm.dll的提供副本。這解決了我的問題。

希望其中的一個會幫助你。

+0

製作每次升級C++ Builder版本時都會有一個新項目,可以避免很多奇怪的問題 –