業受開發問題共享

問題:
鬥戰神(DZS)半自助工具中跑到數據層接口ID:30875就報錯,返回-20009,經查詢錯誤碼,得出參數不存在。只能去看日誌了…
code src:
這裏寫圖片描述
查看日誌:DbManager.log,有部分相關參數,但有這麼一句:QueryId[30875]|Result:errCode[-20009],size:[0],desc:[參數[uin]不存在.]
顯然,QQ號沒有傳過去,繼續檢查QQ號是否獲取到~
這裏寫圖片描述
查看日誌:QhelperRuleValid.log,有QQ的存在且爲正確…
這裏寫圖片描述
奇怪,那就檢查下數據層接口是否有問題唄,把參數直接填進去,正常…~
傳進去前的參數正常,數據層接口正常,爲何到了數據層那裏就少了QQ號呢(PS:其實還少了subject和text值,我一時沒注意到,被DMLOG誤導了)很奇怪,有木有,東想想西想想,這個測試下,那個調下,連數據層輸入參數的位置都調了下,還是不行,想不通了,找其棟(v_qdpeng)童鞋幫忙看下,還是無解~
只能找我的後盾峯哥(windhe)尋求幫助了。。。(PS:每次看到他都好忙碌的樣子,真心不想給他找事兒~)
根據聊天記錄,整理其定位步驟:
1.檢查vArmBlob字段(PS:之前我也有過由於Blob字段有特殊符號導致接口返回錯誤)
2.只能說很細心,發現不僅少了uin,還少了text等參數
3.通過GDB調試,會發現在GetFunction函數中會有對參數inParams的處理
這裏寫圖片描述
4.在源碼中進行代碼添加,多打日誌,如下圖:
這裏寫圖片描述
查看日誌並分析得出結論:cpp文件本身是gbk的,函數Utf8ToGbk處有問題。
能定位到問題就好解決了:把中文轉成GBK存放就可以了
theParamIn1[“subject”] = GbkToUtf8(“系統郵件”);
theParamIn1[“text”] = GbkToUtf8(“系統發放”);

後感:
1.看代碼和日誌要細心,注意隱藏問題
2.調試過程中打日誌,GDB得雙管齊下(PS:來到這裏後,GDB就很少用了,以後注意~)
3.涉及到編碼格式,第一查看文件的格式,然後看需要的格式。若在不正確的地方轉碼,有可能導致問題發生。
4.發生問題後,得耐心地去查看並一個一個地排查,直至解決問題,年輕人細心和耐心很重要~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章