最近花了差不多1天的時間在折騰一個Bug,該Bug的表象如下:
這個Bug還特別獨特,在開發(fā)電腦中無提示,在終端用戶那里每次使用軟件的時候都報這個。仔細(xì)思考了一下最近在源碼中新添加的功能,沒發(fā)現(xiàn)有啥特別明顯的問題。于是,根據(jù)字面意思的理解是“運行時錯誤”,所以一開始解決這個問題的思路是將所有應(yīng)用程序的運行時拷貝至應(yīng)用程序目錄。嘗試過之后,依然報這個異常。分析可能跟運行時的動態(tài)鏈接庫沒有關(guān)系。于是,調(diào)整解決問題的思路,考慮將工程中新添加的代碼進(jìn)行分割。部分部分的測試新添加的代碼到底那里有問題,排查到最后是這個函數(shù)內(nèi)部發(fā)生了異常。異常函數(shù)的代碼如下:
void CleanSerialPort() { if(g_hEvent != NULL) { CloseHandle(g_hEvent); g_hEvent = NULL; } if(g_SerialPort.IsOpen()) { COMMPROP properties; memset(&properties, 0, sizeof(properties)); g_SerialPort.GetProperties(); g_SerialPort.ClearWriteBuffer(); g_SerialPort.ClearReadBuffer