本發(fā)明涉及網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位,特別涉及一種網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法、裝置、設(shè)備。
背景技術(shù):
1、近年來,光通信等無線、有線寬帶業(yè)務(wù)迅速發(fā)展,現(xiàn)有的網(wǎng)通設(shè)備軟件功能需求也越來越復(fù)雜,在設(shè)備內(nèi)部構(gòu)建了各種復(fù)雜的客戶端程序,受硬件成本和開發(fā)周期限制,無法進(jìn)行更完整的診斷系統(tǒng)部署,需要借助完整的調(diào)測流程和故障發(fā)生的環(huán)境去復(fù)現(xiàn)和定位,這樣帶來了,尤其是對(duì)中小公司的人員、勞動(dòng)強(qiáng)度、環(huán)境搭建構(gòu)成了嚴(yán)重挑戰(zhàn),最好的是能夠利用現(xiàn)場故障,收集全面的信息,迅速定位。
2、為了定位嵌入式設(shè)備,其操作系統(tǒng)可以是linux系統(tǒng),為了定位崩潰問題生成的core文件常見指令架構(gòu)是arm和mips。coredump文件按elf格式組織,異常產(chǎn)生時(shí),linux將死機(jī)進(jìn)程的內(nèi)存段的內(nèi)容以segment的形式保存到coredump文件中(包括數(shù)據(jù)區(qū),堆棧區(qū),已分配的堆內(nèi)容,以及死機(jī)時(shí)的幀結(jié)構(gòu)數(shù)據(jù)等),對(duì)于代碼段,linux不保存其內(nèi)容,只保存代碼段的地址信息;其它如線程信息、寄存器信息等輔助信息則保存在類型為pt_note的segment段中。所以使用gdb工具查看時(shí),需要原始的可執(zhí)行文件來恢復(fù)代碼區(qū)的內(nèi)容,運(yùn)行時(shí)的棧幀結(jié)構(gòu)如圖3,操作系統(tǒng)根據(jù)設(shè)置保存內(nèi)存映射和核心轉(zhuǎn)儲(chǔ)文件。
3、不同于現(xiàn)有互聯(lián)網(wǎng)技術(shù),服務(wù)器會(huì)對(duì)終端設(shè)備有清晰的連接日志,中間接入網(wǎng)的設(shè)備數(shù)量龐大,更新狀態(tài)繁雜,一般很少對(duì)網(wǎng)絡(luò)協(xié)議底層進(jìn)行記錄完整的信息,并且定期診斷也有可能遺失故障發(fā)生時(shí)的主要過程的細(xì)節(jié)。對(duì)應(yīng)的,由于傳統(tǒng)辦法需要等到,人工確認(rèn)源代碼的位置和函數(shù)符號(hào)的調(diào)用關(guān)系,反復(fù)做實(shí)驗(yàn)確認(rèn),不利于快速對(duì)進(jìn)程異常的定位,越來越需要把人工工作量放在溝通和協(xié)作一些機(jī)器不好做的協(xié)作上,將需要人工閱讀分析系統(tǒng)調(diào)用的發(fā)生地與中間的庫封裝、可執(zhí)行程序的當(dāng)前位置都輸出出來。
4、傳統(tǒng)的調(diào)試過程和全世界各地網(wǎng)絡(luò)發(fā)展情況不盡相同,合作效率是有客觀條件限制的,還是要配備額外多個(gè)步驟才能完成測試環(huán)境的搭建和觀測,尤其是需要現(xiàn)場的協(xié)助時(shí),網(wǎng)通設(shè)備相比于其他互聯(lián)網(wǎng)終端設(shè)備要有更多物理限制,往往環(huán)境探索本身就步驟繁瑣、專業(yè)性強(qiáng),需要維護(hù)時(shí)需要麻煩專業(yè)技術(shù)人員,留給真正調(diào)試和實(shí)驗(yàn)的時(shí)間更加緊迫,影響用戶體驗(yàn)。對(duì)于一些細(xì)碎的操作,需要有經(jīng)驗(yàn)的人去變更相關(guān)的手動(dòng)診斷指令模板參數(shù)才能定制一些額外的遠(yuǎn)程指令,不利于降低診斷問題的難度。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題之一。為此,本發(fā)明提出一種網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法、裝置、設(shè)備,能夠快速對(duì)流程問題進(jìn)行定位,降低開發(fā)人員內(nèi)部的協(xié)作成本。
2、第一方面,本發(fā)明實(shí)施例提供了一種網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法,包括:
3、收集網(wǎng)通設(shè)備的日志信息,并發(fā)送到云端;
4、在所述日志信息的基礎(chǔ)上,對(duì)特定程序的運(yùn)行狀態(tài)進(jìn)行追蹤和分析,得到追蹤信息;
5、根據(jù)所述日志信息和所述追蹤信息,在云端中對(duì)程序執(zhí)行的具體流程和內(nèi)存映射進(jìn)行還原;
6、當(dāng)所述程序的執(zhí)行流程和內(nèi)存映射完成還原,在云端中對(duì)正常流程的所述日志信息中的系統(tǒng)調(diào)用日志和異常流程的所述日志信息中的系統(tǒng)調(diào)用日志進(jìn)行比較,通過模式識(shí)別算法和流程分支預(yù)測算法對(duì)流程問題處進(jìn)行定位。
7、在本發(fā)明的一些實(shí)施例中,當(dāng)具有至少兩個(gè)所述網(wǎng)通設(shè)備時(shí),所述收集網(wǎng)通設(shè)備的日志信息,并發(fā)送到所述云端前,包括:
8、將所有所述網(wǎng)通設(shè)備置于相同環(huán)境;
9、將所有所述網(wǎng)通設(shè)備配置相同的程序運(yùn)行條件;
10、對(duì)源代碼進(jìn)行流程圖建模,對(duì)于異常流程分支所依賴的變量、異常類型生成判斷條件用于設(shè)備追蹤進(jìn)程時(shí)監(jiān)控;
11、在編譯時(shí),對(duì)網(wǎng)通設(shè)備固件所依賴的所有的二進(jìn)制執(zhí)行文件和功能模塊文件保存調(diào)試符號(hào)版本作為備份,與剝離調(diào)試符號(hào)后的所述網(wǎng)通設(shè)備固件的二進(jìn)制執(zhí)行文件和功能模塊文件一一對(duì)應(yīng)。
12、在本發(fā)明的一些實(shí)施例中,所述網(wǎng)通設(shè)備包括第一網(wǎng)通設(shè)備和第二網(wǎng)通設(shè)備,所述收集網(wǎng)通設(shè)備的日志信息,并發(fā)送到所述云端,包括:
13、獲取流程的異常類型;
14、收集各個(gè)所述異常類型的所述日志信息;
15、收集觸發(fā)所述判斷條件的所在流程的變量和函數(shù)作為關(guān)鍵日志;
16、根據(jù)所述日志信息和所述關(guān)鍵日志,生成至少一個(gè)判斷條件指令和調(diào)整內(nèi)存映射指令,使得所述云端將所述判斷條件指令和所述調(diào)整內(nèi)存映射指令發(fā)送到用于第一網(wǎng)通設(shè)備和/或復(fù)現(xiàn)問題的第二網(wǎng)通設(shè)備,確認(rèn)復(fù)現(xiàn)問題的所有條件。
17、在本發(fā)明的一些實(shí)施例中,所述收集各個(gè)所述異常類型的所述日志信息,包括:
18、當(dāng)所述異常類型為系統(tǒng)崩潰,則對(duì)系統(tǒng)資源的運(yùn)行情況進(jìn)行信息收集;
19、當(dāng)所述異常類型為網(wǎng)絡(luò)中斷,則對(duì)基礎(chǔ)服務(wù)的中斷情況進(jìn)行信息收集;
20、當(dāng)所述異常類型為基礎(chǔ)服務(wù)中斷,則將額外網(wǎng)絡(luò)連接到網(wǎng)通設(shè)備,收集人工輸入信息;
21、當(dāng)所述異常類型為客戶端設(shè)備服務(wù)中斷,則對(duì)用戶態(tài)進(jìn)程內(nèi)部記錄信息進(jìn)行信息收集。
22、在本發(fā)明的一些實(shí)施例中,所述追蹤信息包括棧幀日志,所述在云端中對(duì)正常流程的所述日志信息中的系統(tǒng)調(diào)用日志和異常流程的所述日志信息中的系統(tǒng)調(diào)用日志進(jìn)行比較,通過模式識(shí)別算法對(duì)流程問題處進(jìn)行定位,包括:
23、獲取程序運(yùn)行時(shí)的所述棧幀日志和內(nèi)存映射;
24、映射所述棧幀日志到回源代碼,得到對(duì)應(yīng)的語句調(diào)用結(jié)構(gòu);
25、通過模式識(shí)別算法和流程分支預(yù)測算法監(jiān)控和定位所述網(wǎng)通設(shè)備中不同進(jìn)程在程序執(zhí)行過程的異常。
26、在本發(fā)明的一些實(shí)施例中,所述在云端中對(duì)正常流程的所述日志信息中的系統(tǒng)調(diào)用日志和異常流程的所述日志信息中的系統(tǒng)調(diào)用日志進(jìn)行比較,通過模式識(shí)別算法對(duì)流程問題處進(jìn)行定位后,包括:
27、獲取定位處的所述日志信息,作為錯(cuò)誤日志;
28、根據(jù)所述錯(cuò)誤日志中的錯(cuò)誤代碼,在源代碼中定位對(duì)應(yīng)的代碼位置,對(duì)所述代碼位置的代碼進(jìn)行代碼檢查,得到代碼總結(jié)信息;
29、獲取所述流程問題的流程問題信息,根據(jù)所述代碼總結(jié)信息和所述流程問題信息生成錯(cuò)誤報(bào)告。
30、在本發(fā)明的一些實(shí)施例中,所述在云端中對(duì)正常流程的所述日志信息中的系統(tǒng)調(diào)用日志和異常流程的所述日志信息中的系統(tǒng)調(diào)用日志進(jìn)行比較,通過模式識(shí)別算法對(duì)流程問題處進(jìn)行定位前,包括:
31、在云端中獲取所述追蹤信息中的源代碼堆??煺?;
32、將所述源代碼堆??煺罩械亩M(jìn)制地址信息去除。
33、第二方面,本發(fā)明實(shí)施例提供了一種網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位裝置,包括少一個(gè)控制處理器和用于與所述至少一個(gè)控制處理器通信連接的存儲(chǔ)器;所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)控制處理器執(zhí)行的指令,所述指令被所述至少一個(gè)控制處理器執(zhí)行,以使所述至少一個(gè)控制處理器能夠執(zhí)行如上述第一方面所述的網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法。
34、第三方面,本發(fā)明實(shí)施例提供了一種電子設(shè)備,包括有如上述第二方面所述的網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位裝置。
35、第四方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行如上述第一方面所述的網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法。
36、根據(jù)本發(fā)明實(shí)施例的網(wǎng)通設(shè)備網(wǎng)絡(luò)客戶端流程問題定位方法,至少具有如下有益效果:收集網(wǎng)通設(shè)備的日志信息,并發(fā)送到云端;在所述日志信息的基礎(chǔ)上,對(duì)特定程序的運(yùn)行狀態(tài)進(jìn)行追蹤和分析,得到追蹤信息;根據(jù)所述日志信息和所述追蹤信息,在云端中對(duì)程序執(zhí)行的具體流程和內(nèi)存映射進(jìn)行還原;當(dāng)所述程序的執(zhí)行流程和內(nèi)存映射完成還原,在云端中對(duì)正常流程的所述日志信息中的系統(tǒng)調(diào)用日志和異常流程的所述日志信息中的系統(tǒng)調(diào)用日志進(jìn)行比較,通過模式識(shí)別算法對(duì)流程問題處進(jìn)行定位。獲取網(wǎng)通設(shè)備的日志信息,對(duì)特定程序相關(guān)進(jìn)行快速深入,用于尋找復(fù)現(xiàn)條件,在實(shí)現(xiàn)復(fù)現(xiàn)后,能快速對(duì)復(fù)現(xiàn)后的程序流程進(jìn)行定位,方便后續(xù)的問題解決,減少搭建環(huán)境的工作量和大量的診斷重復(fù)工作,本方法可以大幅提升自動(dòng)化,縮短定位問題時(shí)間,降低開發(fā)人員內(nèi)部的協(xié)作成本。