[發(fā)明專利]一種輕量級(jí)線程分析與運(yùn)行可視化方法有效
| 申請(qǐng)?zhí)枺?/td> | 201710293494.0 | 申請(qǐng)日: | 2017-04-28 |
| 公開(公告)號(hào): | CN107045478B | 公開(公告)日: | 2019-12-13 |
| 發(fā)明(設(shè)計(jì))人: | 林禹;林暢輝 | 申請(qǐng)(專利權(quán))人: | 福建星瑞格軟件有限公司 |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 35212 福州市鼓樓區(qū)京華專利事務(wù)所(普通合伙) | 代理人: | 林曉琴 |
| 地址: | 350000 福建省福州市鼓樓區(qū)*** | 國省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 輕量級(jí) 線程 分析 運(yùn)行 可視化 方法 | ||
本發(fā)明提供一種輕量級(jí)線程分析與運(yùn)行可視化方法,包括:運(yùn)行源程序,采集源程序的輕量級(jí)線程ID和運(yùn)行時(shí)堆棧,輕量級(jí)線程ID通過反向注入獲得;根據(jù)所述輕量級(jí)線程ID對(duì)采集到的運(yùn)行時(shí)堆棧進(jìn)行分離,得到復(fù)數(shù)個(gè)子運(yùn)行時(shí)堆棧;統(tǒng)計(jì)每一子運(yùn)行時(shí)堆棧中各函數(shù)的調(diào)用數(shù)據(jù),調(diào)用數(shù)據(jù)包括歸屬模塊、調(diào)用次數(shù)、調(diào)用深度和調(diào)用跨度;分別根據(jù)預(yù)設(shè)的歸屬模塊、調(diào)用次數(shù)、調(diào)用深度和調(diào)用跨度對(duì)每一子運(yùn)行時(shí)堆棧進(jìn)行過濾;對(duì)過濾后的每一子運(yùn)行時(shí)堆棧進(jìn)行可視化展示,得到每一線程對(duì)應(yīng)的函數(shù)調(diào)用關(guān)系圖,供工程師分析查閱。本發(fā)明實(shí)現(xiàn)對(duì)輕量級(jí)線程程序運(yùn)行時(shí)堆棧的分析與自定義篩選,并實(shí)現(xiàn)可視化展示,為工程師提供有效的源程序分析依據(jù),提高軟件開發(fā)效率。
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)分析技術(shù)領(lǐng)域,尤其涉及一種輕量級(jí)線程分析與運(yùn)行可視化方法。
背景技術(shù)
輕量級(jí)線程又名纖程,是一種由內(nèi)核支持的用戶線程,它是基于內(nèi)核線程的高級(jí)抽象。
由于纖程與普通線程相比,資源占用更小,無需額外的內(nèi)核空間資源、頁表等,創(chuàng)建、銷毀、切換更快,無需內(nèi)核陷入,可自定義調(diào)度策略等優(yōu)點(diǎn),目前越來越多的大型項(xiàng)目采用輕量級(jí)線程方式編程。傳統(tǒng)的分析源程序運(yùn)行時(shí)堆棧記錄工具已經(jīng)不能滿足要求,現(xiàn)有的用于分析源程序運(yùn)行時(shí)堆棧記錄分析方法主要是:先通過一編譯器工具鏈(如GNU編譯器工具鏈,可通過一參數(shù)finstrument-function對(duì)源代碼所有函數(shù)調(diào)用形成一個(gè)代理入口)獲取源程序運(yùn)行時(shí)堆棧記錄,再利用一定制的中間代碼(如pvtrace工具)對(duì)函數(shù)跟蹤數(shù)據(jù)進(jìn)行處理,并生成矩陣格式,通過一地址映射工具(如Addr2line工具)將獲取到的函數(shù)地址映射成函數(shù)名以便用戶閱讀,最后利用開源的graphviz工具對(duì)整個(gè)源程序的函數(shù)調(diào)用關(guān)系進(jìn)行圖形繪制。而這種運(yùn)行時(shí)堆棧記錄的分析方法雖然在一定程度上提高了項(xiàng)目分析效率,但現(xiàn)有的運(yùn)行時(shí)堆棧只能用于實(shí)現(xiàn)對(duì)單線程的小項(xiàng)目的分析,并不適用超過二十萬行以上的多線程或輕量級(jí)線程的程序,因此其對(duì)工程師分析源程序的貢獻(xiàn)相當(dāng)有限。且由于輕量級(jí)線程是用戶態(tài)線程,而不是系統(tǒng)線程,因此無法適用傳統(tǒng)的直接獲取操作系統(tǒng)線程來采集采集輕量級(jí)線程ID,而若直接對(duì)源程序進(jìn)行修改從而獲取線程信息,可能會(huì)破壞源程序。有鑒于此,開發(fā)一種可用于大項(xiàng)目的輕量級(jí)線程分析與運(yùn)行可視化方法就顯得尤為重要。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題,在于提供一種輕量級(jí)線程分析與運(yùn)行可視化方法,實(shí)現(xiàn)對(duì)輕量級(jí)線程程序運(yùn)行時(shí)堆棧的分析與自定義篩選,并實(shí)現(xiàn)可視化展示,為工程師提供有效的源程序分析依據(jù),提高軟件開發(fā)效率。
本發(fā)明是這樣實(shí)現(xiàn)的:一種輕量級(jí)線程分析與運(yùn)行可視化方法,包括如下步驟:
步驟1、運(yùn)行源程序,采集所述源程序的輕量級(jí)線程ID和運(yùn)行時(shí)堆棧,所述輕量級(jí)線程ID采集的方式為:通過dl庫調(diào)用一外部程序,通過所述外部程序獲取所述源程序的函數(shù)地址,并根據(jù)函數(shù)地址獲得所述輕量級(jí)線程ID;
步驟2、根據(jù)所述輕量級(jí)線程ID對(duì)采集到的運(yùn)行時(shí)堆棧進(jìn)行分離,使得每一所述輕量級(jí)線程ID對(duì)應(yīng)一個(gè)子運(yùn)行時(shí)堆棧;
步驟3、統(tǒng)計(jì)每一所述子運(yùn)行時(shí)堆棧中各函數(shù)的調(diào)用數(shù)據(jù),所述調(diào)用數(shù)據(jù)包括歸屬模塊、調(diào)用次數(shù)、調(diào)用深度和調(diào)用跨度;
步驟4、根據(jù)所述歸屬模塊對(duì)每一所述子運(yùn)行時(shí)堆棧中的基礎(chǔ)類函數(shù)進(jìn)行識(shí)別并過濾;
步驟5、根據(jù)預(yù)先設(shè)定的調(diào)用次數(shù)值、調(diào)用深度值和調(diào)用跨度值對(duì)每所述子運(yùn)行時(shí)堆棧做進(jìn)一步過濾;
步驟6、對(duì)每一所述子運(yùn)行時(shí)堆棧進(jìn)行可視化展示,繪制每一線程對(duì)應(yīng)的函數(shù)調(diào)用關(guān)系圖,供工程師分析查閱。
進(jìn)一步的,所述運(yùn)行時(shí)堆棧是通過在編譯器添加標(biāo)志,之后通過代理函數(shù)獲得的。
進(jìn)一步的,所述歸屬模塊包括內(nèi)存分配模塊、文件操作模塊和鎖模塊。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于福建星瑞格軟件有限公司,未經(jīng)福建星瑞格軟件有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710293494.0/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤
- 高速高帶寬AHB總線到低速低帶寬AHB總線的雙向轉(zhuǎn)換橋
- 可拆裝換鉤頭的1輕量級(jí)的鋁制手柄及十四枚鋼鉤針組合
- 一種輕量級(jí)節(jié)點(diǎn)的數(shù)據(jù)傳輸方法、裝置、設(shè)備和介質(zhì)
- 一種輕量級(jí)節(jié)點(diǎn)的數(shù)據(jù)傳輸方法、裝置、設(shè)備和介質(zhì)
- 輕量級(jí)請(qǐng)求的并發(fā)處理方法及相關(guān)設(shè)備
- 一種輕量級(jí)深度卷積神經(jīng)網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)方法
- 一種小區(qū)選擇方法、輕量級(jí)終端及網(wǎng)絡(luò)設(shè)備
- 授權(quán)簽名生成方法、節(jié)點(diǎn)管理方法、裝置、設(shè)備和介質(zhì)
- 輕量級(jí)桌面機(jī)械臂底座及輕量級(jí)桌面機(jī)械臂
- 輕量級(jí)機(jī)械臂束線結(jié)構(gòu)、輕量級(jí)機(jī)械臂及機(jī)器人
- 在多線程處理器中用于高速線程間中斷的方法和設(shè)備
- 一種多線程系統(tǒng)中實(shí)現(xiàn)實(shí)時(shí)監(jiān)控各線程狀態(tài)的方法
- 移動(dòng)終端系統(tǒng)線程池實(shí)現(xiàn)方法及裝置
- 一種基于策略模式的信號(hào)發(fā)生器多線程管理方法
- 多線程并發(fā)處理方法和多線程并發(fā)處理系統(tǒng)
- 分布式系統(tǒng)的線程管理方法和裝置
- 線程執(zhí)行方法、裝置、終端及存儲(chǔ)介質(zhì)
- 線程監(jiān)控方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種多核系統(tǒng)中多線程調(diào)度方法、裝置及設(shè)備
- 線程間通信方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 運(yùn)行控制裝置及運(yùn)行控制方法
- 運(yùn)行支援裝置、運(yùn)行支援系統(tǒng)以及運(yùn)行支援程序
- 列車運(yùn)行處理方法、運(yùn)行處理裝置和運(yùn)行調(diào)度系統(tǒng)
- 運(yùn)行監(jiān)測系統(tǒng)及運(yùn)行監(jiān)測方法
- 運(yùn)行控制裝置及運(yùn)行控制方法
- 運(yùn)行曲線制作裝置、運(yùn)行輔助裝置以及運(yùn)行控制裝置
- 運(yùn)行支持裝置、車輛、運(yùn)行管理裝置和運(yùn)行支持方法
- 運(yùn)行計(jì)劃方法、運(yùn)行控制裝置和運(yùn)行計(jì)劃系統(tǒng)
- 運(yùn)行控制裝置、運(yùn)行管理系統(tǒng)、運(yùn)行控制方法以及車輛
- 自動(dòng)建模運(yùn)行系統(tǒng)及運(yùn)行方法





