一種記錄bug的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)運維技術(shù)領(lǐng)域,特別是涉及一種記錄BUG的方法及系統(tǒng)。
【背景技術(shù)】
[0002]Linux操作系統(tǒng)作為服務(wù)器的主流系統(tǒng),正在被越來越多的應(yīng)用到各行各業(yè)中。任何操作系統(tǒng)都存在BUG,Linux操作系統(tǒng)也不例外,一旦Linux操作系統(tǒng)的內(nèi)核出現(xiàn)BUG,幾乎所有輸入設(shè)備(例如鍵盤、鼠標(biāo)等)都將失靈,而內(nèi)核打印的堆棧錯誤信息將覆蓋服務(wù)器的整個屏幕,甚至一個屏幕都打印不完,此時屏幕上只會顯示錯誤信息的最后一部分,請參照圖1所示,圖1為本發(fā)明提供的一種操作系統(tǒng)內(nèi)核出現(xiàn)BUG時,服務(wù)器上屏幕的截圖示意圖。由于運維人員一時間也無法定位查找出問題,現(xiàn)有技術(shù)中為了查找出問題,常用的方法一種是用戶用手機或者相機將屏幕上的錯誤信息拍下來進(jìn)行分析,但只能拍一張堆棧錯誤信息,記錄不全面;另一種方法是將服務(wù)器重啟后從錯誤日志中查找錯誤信息,但此時錯誤日志中記錄的錯誤信息有可能記錄不全。
[0003]因此,如何提供一種能夠全面記錄BUG的方法及系統(tǒng)是本領(lǐng)域技術(shù)人員目前需要解決的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種記錄BUG的方法,實現(xiàn)了采用二維碼的方式將錯誤信息完整的記錄下來,用戶可用二維碼掃描工具掃描屏幕上的二維碼,進(jìn)行相應(yīng)的逆操作便可得到全面、完整的原始BUG的錯誤信息,以便后續(xù)的分析,為能夠準(zhǔn)確的定位系統(tǒng)出現(xiàn)BUG的原因提供了良好的基礎(chǔ);本發(fā)明的另一目的是提供一種記錄BUG的系統(tǒng)。
[0005]為解決上述技術(shù)問題,本發(fā)明提供了一種記錄BUG的方法,包括:
[0006]獲取錯誤信息;
[0007]當(dāng)所述錯誤信息的字符數(shù)不大于二維碼處理的字符數(shù)閾值時,將所述錯誤信息轉(zhuǎn)化為二進(jìn)制數(shù)據(jù);
[0008]對所述二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼并進(jìn)行顯示;
[0009]當(dāng)要獲取所述錯誤信息時,通過二維碼掃描工具對所述二維碼進(jìn)行掃描,進(jìn)行相應(yīng)的逆操作,得到所述錯誤信息。
[0010]優(yōu)選地,當(dāng)所述錯誤信息的字符數(shù)大于二維碼處理的字符數(shù)閾值時,該方法還包括:
[0011]將所述錯誤信息中的16進(jìn)制字符串轉(zhuǎn)化為16進(jìn)制整形數(shù)據(jù);
[0012]將所述錯誤信息中的無格式的數(shù)據(jù)轉(zhuǎn)化為格式化數(shù)據(jù),并對所述格式化數(shù)據(jù)進(jìn)行壓縮,得到格式化壓縮數(shù)據(jù);
[0013]將所述16進(jìn)制整形數(shù)據(jù)和所述格式化壓縮數(shù)據(jù)轉(zhuǎn)化為所述二進(jìn)制數(shù)據(jù)。
[0014]優(yōu)選地,所述對所述二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼并進(jìn)行顯示的過程具體為:
[0015]對所述二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼;
[0016]將所述二維碼的尺寸調(diào)整為用于顯示的服務(wù)器的屏幕的尺寸;
[0017]依次讀取所述二維碼中的像素點,并依據(jù)所述像素點的灰度值將所述像素點轉(zhuǎn)換為相應(yīng)的能夠顯示的ASCII碼并進(jìn)行顯示。
[0018]為解決上述技術(shù)問題,本發(fā)明還提供了一種記錄BUG的系統(tǒng),包括:
[0019]BUG收集器,用于獲取錯誤信息;當(dāng)所述錯誤信息的字符數(shù)不大于二維碼處理的字符數(shù)閾值時,將所述錯誤信息轉(zhuǎn)化為二進(jìn)制數(shù)據(jù);
[0020]二維碼生成器,用于對所述二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼;
[0021]顯示裝置,用于對所述二維碼進(jìn)行顯示;
[0022]二維碼掃描工具,用于當(dāng)要獲取所述錯誤信息時,通過二維碼掃描工具對所述二維碼進(jìn)行掃描,進(jìn)行相應(yīng)的逆操作,得到所述錯誤信息。
[0023]優(yōu)選地,當(dāng)所述錯誤信息的字符數(shù)大于二維碼處理的字符數(shù)閾值時,BUG收集器還用于將所述錯誤信息中的16進(jìn)制字符串轉(zhuǎn)化為16進(jìn)制整形數(shù)據(jù);將所述錯誤信息中的無格式的數(shù)據(jù)轉(zhuǎn)化為格式化數(shù)據(jù),并對所述格式化數(shù)據(jù)進(jìn)行壓縮,得到格式化壓縮數(shù)據(jù);將所述16進(jìn)制整形數(shù)據(jù)和所述格式化壓縮數(shù)據(jù)轉(zhuǎn)化為所述二進(jìn)制數(shù)據(jù)。
[0024]優(yōu)選地,所述二維碼生成器具體包括:
[0025]轉(zhuǎn)換單元,用于對所述二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼;
[0026]調(diào)整單元,用于將所述二維碼的尺寸調(diào)整為用于顯示的服務(wù)器的屏幕的尺寸;
[0027]ASCII碼轉(zhuǎn)化單元,用于依次讀取所述二維碼中的像素點,并依據(jù)所述像素點的灰度值將所述像素點轉(zhuǎn)換為相應(yīng)的能夠顯示的ASCII碼。
[0028]本發(fā)明提供了一種記錄BUG的方法及系統(tǒng),該方法包括獲取錯誤信息;當(dāng)錯誤信息的字符數(shù)不大于二維碼處理的字符數(shù)閾值時,將錯誤信息轉(zhuǎn)化為二進(jìn)制數(shù)據(jù);對二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二維碼并進(jìn)行顯示;當(dāng)要獲取錯誤信息時,通過二維碼掃描工具對二維碼進(jìn)行掃描,進(jìn)行相應(yīng)的逆操作,得到錯誤信息。本發(fā)明實現(xiàn)了采用二維碼的方式將錯誤信息完整的記錄下來,用戶可用二維碼掃描工具掃描屏幕上的二維碼,進(jìn)行相應(yīng)的逆操作便可得到全面、完整的原始BUG的錯誤信息,以便后續(xù)的分析,為能夠準(zhǔn)確的定位系統(tǒng)出現(xiàn)BUG的原因提供了良好的基礎(chǔ)。
【附圖說明】
[0029]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0030]圖1為本發(fā)明提供的一種操作系統(tǒng)內(nèi)核出現(xiàn)BUG時,服務(wù)器上屏幕的截圖示意圖;[0031 ]圖2為本發(fā)明提供的一種的記錄BUG的方法的過程的流程圖;
[0032]圖3為本發(fā)明提供的一種通過ASCII碼模擬二維碼的示意圖;
[0033]圖4為本發(fā)明提供的一種記錄BUG的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0034]本發(fā)明的核心是提供一種記錄BUG的方法,實現(xiàn)了采用二維碼的方式將錯誤信息完整的記錄下來,用戶可用二維碼掃描工具掃描屏幕上的二維碼,進(jìn)行相應(yīng)的逆操作便可得到全面、完整的原始BUG的錯誤信息,以便后續(xù)的分析,為能夠準(zhǔn)確的定位系統(tǒng)出現(xiàn)BUG的原因提供了良好的基礎(chǔ);本發(fā)明的另一核心是提供一種記錄BUG的系統(tǒng)。
[0035]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0036]請參照圖2,圖2為本發(fā)明提供的一種的記錄BUG的方法的過程的流程圖,該方法包括:
[0037]步驟SlOl:獲取錯誤信息;
[0038]步驟S102:當(dāng)錯誤信息的字符數(shù)不大于二維碼處理的字符數(shù)閾值時,將錯誤信息轉(zhuǎn)化為二進(jìn)制數(shù)據(jù);
[0039]作為優(yōu)選地,當(dāng)錯誤信息的字符數(shù)大于二維碼處理的字符數(shù)閾值時,該方法還包括:
[0040]將錯誤信息中的16進(jìn)制字符串轉(zhuǎn)化為16進(jìn)制整形數(shù)據(jù);
[0041]將錯誤信息中的無格式的數(shù)據(jù)轉(zhuǎn)化為格式化數(shù)據(jù),并對格式化數(shù)據(jù)進(jìn)行壓縮,得到格式化壓縮數(shù)據(jù);
[0042]將16進(jìn)制整形數(shù)據(jù)和格式化壓縮數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)。
[0043]可以理解的是,可以將錯誤信息分為無格式的數(shù)據(jù)和16進(jìn)制字符串兩大類,對于這兩大類分別進(jìn)行壓縮處理。
[0044]為方便理解,下面對將錯誤信息中的無格式的數(shù)據(jù)轉(zhuǎn)化為格式化數(shù)據(jù)進(jìn)行舉例介紹:
[0045]打印寄存器信息:
[0046]RAX:0000000000000015 RBX:ffffffffffffffaO RCX:0000000000000000
[0047]RDX:0000000000000000 RS1:0000000000000046 RD1:0000000000000246
[0048]轉(zhuǎn)化為格式化數(shù)據(jù):
[0049]{RAX:整形數(shù)據(jù),RBX:整形數(shù)據(jù),RCX:整形數(shù)據(jù),RDX:整形數(shù)據(jù),RS1:整形數(shù)據(jù),RD1:整形數(shù)據(jù)}。
[0050]打印跟蹤信息:
[0051]Call Trace:
[0052][<ffffffff8150cfc8>]?panic+0xa7/0xl6f
[0053][<ffffffff815111f4>]?oops_end+0xe4/0xl00
[0054][<ffffffff81046bfb>]?no_context+0xfb/0x260
[0055]轉(zhuǎn)化為格式化數(shù)據(jù):
[0056]Typel:[<X>]?Y+Z 【定義一種格式化類型數(shù)據(jù)】
[0057]則格式化后的數(shù)據(jù)為:
[0058]Call Trace:
[0059]Typel(ffffffff8150cfc8,panic,0xa7/0xl6f)
[0060]Typel(ffffffff815111f4,oops_end,0xe4/0xl00)
[0061 ] Typel(ffffffff81046bfb,no_context,0xfb/0x260)。
[0062]當(dāng)然,上述只是從將錯誤信息中的無格式的數(shù)據(jù)轉(zhuǎn)化為格式化數(shù)據(jù)時,多種情況中選取的兩種,還有其它很多種情況本發(fā)明在此不再一一列舉,能實現(xiàn)本發(fā)明目的即可。
[0063]步驟S103:對二進(jìn)制數(shù)據(jù)進(jìn)行二維碼轉(zhuǎn)換處理,得到二