2010-08-25 87 views
1

我正在使用Visual Studio 2008,使用.net框架,C++/CLI。我的程序只能在調試模式下運行(即使在從資源管理器運行時) - 但在發佈模式下,它表示程序已停止工作。 (但是如果在釋放模式下按F5,它運行良好)所有設置都是相同的。會是什麼呢?有沒有人有任何建議嗎?爲什麼我的程序只能在調試模式下工作?

+0

只是猜測,但你是從後臺線程更新UI組件?只有在切換到發佈模式時,我的應用程序纔會失敗,因爲框架在從非UI線程更新UI時會皺眉頭。 – kbrimington 2010-08-25 18:36:28

+1

你應該發佈代碼,它可能有助於得到答案。 – 2010-08-25 18:37:00

+0

@kbrimington他說的CLI,所以可能不會形成。 – McKay 2010-08-25 18:42:26

回答

4

我知道舊版本的Visual Studio會在調試模式下將未初始化的變量設置爲零。在發佈模式下,這些變量可能具有「隨機」值。我不知道當前版本的Visual Studio是否會發生這種情況。

未初始化的變量可能導致代碼中的問題嗎?

+0

嘿偉大 - 它現在工作正常 - 我從來沒有注意到它,否則。謝謝 – wezten 2010-08-25 18:41:20

+0

@Elliott,如果這是您的問題,請選擇正確的答案。 – McKay 2010-08-25 18:43:56

1

很難對這裏可能發生的事情做出一般性聲明。有太多可能導致問題的事情。

最好的辦法是在釋放模式下部署您的應用程序,附加一個調試器並查看失敗是什麼。

+0

謝謝 - 但附加調試器的最佳方式是什麼? – wezten 2010-08-25 18:37:16

+0

@Elliot,使用Visual Studio轉到工具 - >附加到進程並選擇您的應用程序。 – JaredPar 2010-08-25 18:39:51

+0

@Elliott C#express不允許你附加調試器,在專業:調試 - >附加到進程 – McKay 2010-08-25 18:41:00

0

夫婦的想法:

  1. 如果你的應用程序仍然依賴於CRT,你可能會遇到問題部署/上沒有正確版本的其他機器上運行它。使用依賴walker來查看你的發佈模式EXE,並且也嘗試使用依賴walker進行分析,日誌可以揭示各種問題。 www.dependencywalker.com

  2. 正如其他人所指出的,發佈模式會刪除調試模式提供的許多安全防護措施。我會試着用你的可執行文件打開「用於Windows的調試工具」的gflags,然後在調試模式下運行程序。這將捕獲整個類別的問題,而這些問題可能不會被普通的調試模式安全防護所捕獲。

  3. 最後,如果上述兩個解決方案沒有幫助,請將您的「調試」項目設置爲發佈版本。通過更改使其成爲「調試」構建一個設置的項目設置,直到找到使您的問題出現並在此工作的設置爲止。

相關問題