2016-11-17 57 views
0

我的問題非常普遍。在IDE中運行程序並通過.exe運行程序之間有重要區別嗎?

我做了一個關於winsock2上的客戶端 - 服務器應用程序的巨型巨型項目。

事實是:我的應用程序完美的作品,如果我打開在Visual Studio 2015年的項目,我從那裏運行,但如果我通過雙擊他的.exe文件打開服務器上的文件我的客戶端犯規顯示任何內容。

我不會發布代碼,因爲它就像500行,但我問:我應該關心一些不同的東西,當我從.exe運行程序?我怎麼能注意到如果出現問題?

P.s.我已經從Visual Studio中調試過了,當它從.exe啓動時它不會引發任何異常/錯誤(它根本不顯示任何內容)。 服務器是用C++編寫的客戶端程序。

更新:它的工作原理,如果我從bash運行它,我的意思是打開cmd.exe。它仍然無法通過雙擊.exe。一切都好嗎?我可以說我有一個工作計劃嗎?

+2

'我怎麼能注意到是否有問題?' - 使用類似log4net的東西來記錄所有內容。在您的配置中有一個日誌記錄級別,用於決定要輸出的內容。將日誌級別設置爲verbose,運行程序,讀取日誌。 – Equalsk

+0

*不顯示任何內容*它應該做什麼?無論如何,主要區別在於VS的環境與全球的環境不一樣。 – stijn

+0

工作目錄不同,這意味着文件和目錄的相對路徑不同。您可能在IDE中設置了一些環境變量或命令行參數,這些參數在雙擊可執行文件時未設置。您需要確保您正確地處理錯誤,並且您有默認值和可用的後備值。另外,首先嚐試從控制檯窗口運行,以確保它在那裏工作。從不同的目錄運行。測試一下。並有大量的日誌記錄。 –

回答

0

這很難孤立地回答; 可能存在差異,尤其是與配置路徑有關的差異,以及某些運行時組件(特別是winforms具有細微的細微差別)。然而!它聽起來像這樣更關係到你的應用程序。對於未處理的錯誤,您通常會期望操作系統報告的非常負載崩潰。但是如果你的代碼默默吞嚥錯誤,那不會發生。所以,要檢查的東西:

  • 是exe默默運行?檢查進程列表
  • 你有很大的catch塊未報告的實際問題
  • 有錯誤日誌什麼?
  • 你是否在做任何與標準輸入有關的具體行爲,可能會有不同的表現?

但最關鍵的是添加日誌記錄,也許在編譯或命令行開關後面,告訴你它有多遠。