定時關機程式在 VS2013 按 Ctrl+F5 正常運行,雙擊 Debug/Release 資料夾下的 .exe 卻閃退或無反應。
| 項目 | VS IDE (Ctrl+F5) | 直接雙擊 .exe |
|---|---|---|
| 工作目錄 | 專案目錄 $(ProjectDir) | .exe 所在目錄 |
| 環境變數 | 繼承 VS 環境,含偵錯器輔助 | 標準使用者環境 |
| 控制台視窗 | VS 托管,程式結束自動暫停 | 系統 Console,結束即關閉 |
| 偵錯器附加 | 有(捕捉例外、斷點) | 無 |
// main 結束前加入
system("pause"); // Windows 專用
// 或跨平台
std::cin.get();
程式以相對路徑讀取設定檔/資料檔,IDE 下工作目錄正確,獨立執行失敗。
// 取得 .exe 所在目錄
char path[MAX_PATH];
GetModuleFileNameA(NULL, path, MAX_PATH);
PathRemoveFileSpecA(path); // 需 #include 連結 Shlwapi.lib
std::string configPath = std::string(path) + "\\config.ini";
如未初始化變數、記憶體越界。偵錯器會將記憶體初始化為 0xCC/0xCD,掩蓋錯誤。
program.exe 觀察錯誤訊息gflags /p /enable program.exe /full 啟用頁堆偵測