最近花了差不多1天的時間在折騰一個Bug,該Bug的表象如下: 

Android培訓(xùn),安卓培訓(xùn),手機開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

Android培訓(xùn),安卓培訓(xùn),手機開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

Android培訓(xùn),安卓培訓(xùn),手機開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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