2010-09-01 50 views
0

下面的代碼片段的行爲在調試模式(VC++ 2005)不同於在發佈:奇怪的調試器行爲

HANDLE hFileRead; 
hFileRead = CreateFile(pszListFile,   // lpFileName, 
         GENERIC_READ,   // dwDesiredAccess, 
         FILE_SHARE_READ,  // dwShareMode, 
         NULL,     // lpSecurityAttributes, 
         OPEN_EXISTING,   // dwCreationDisposition, 
         FILE_ATTRIBUTE_NORMAL, // dwFlagsAndAttributes, 
         0);     // hTemplateFile 

在發行模式下,它完美的作品。 在調試模式下,它在hFileRead中返回INVALID_HANDLE_VALUE。 進一步檢索GetLastError函數()顯示系統錯誤3:

ERROR_PATH_NOT_FOUND( 「系統 找不到指定的路徑」)

這很奇怪。在發佈模式下它可以找到它,但在調試模式下它找不到它?這怎麼可能?

任何想法?

+1

您是否在64位操作系統上運行?不要把東西放在c:\ program files中,它是虛擬化的。 – 2010-09-01 20:10:49

+0

+1進行創意嘗試。不,我沒有運行64位操作系統。 – 2010-09-12 18:47:48

回答

0

問題沒有再發生。放棄直至另行通知。

0

如果pszListFile包含相對路徑,則可以在當前目錄中區別。

+0

謝謝Alex。 pszListFile是100%絕對路徑,也在調試器中驗證。所以這不是。 – 2010-09-01 18:35:23

+0

我記得「文件不存在」是2,而不是3,也許我錯了...什麼是確切的pszListFile值,嘗試使用OutputDebugString打印它。 – 2010-09-01 18:42:23

+0

確切的pszListFile值是「C:\ Program Files \ TestCo \ TestApp \ list.txt」。請注意ERROR_FILE_NOT_FOUND(2)和ERROR_PATH_NOT_FOUND(3)之間的區別。 – 2010-09-01 18:52:19