91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何提高閱讀源碼的效率

FPGA之家 ? 來(lái)源:小麥大叔 ? 作者:小麥大叔 ? 2022-07-06 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我發(fā)現(xiàn)函數(shù)調(diào)用圖可以讓我們更加直觀地了解到源碼函數(shù)直接的調(diào)用和層次關(guān)系,提高閱讀源碼的效率。

1 前言

看源碼的時(shí)候,心血來(lái)潮想弄一下函數(shù)之前的調(diào)用關(guān)系,想起以前doxygen配合graphviz使用可以生成比較直觀的函數(shù)調(diào)用關(guān)系圖,但是前提是函數(shù)的注釋需要嚴(yán)格按照doxygen的規(guī)范,具體可以自己去搜索一下,當(dāng)然使用source insight等利器也很方便;

本文主要通過gcc+egypt+graphviz(dot)三個(gè)工具輕松生成源碼的函數(shù)調(diào)用關(guān)系圖;下圖是本人在閱讀FreeRTOS源碼tasks.c時(shí)生成的調(diào)用關(guān)系圖,具體如下所示;

045f7db6-fcc3-11ec-ba43-dac502259ad0.png一個(gè)例子

2 graphviz 安裝

Graphviz (Graph Visualization Software的縮寫)是一個(gè)由AT&T實(shí)驗(yàn)室啟動(dòng)的開源工具包,用于繪制DOT語(yǔ)言腳本描述的圖形。ubuntu下可以直接安裝;

sudoapt-getinstallgraphviz

直接輸入指令后,系統(tǒng)開始安裝;046f787e-fcc3-11ec-ba43-dac502259ad0.png

成功安裝graphviz,這里我們就可以使用dot工具了,具體使用方法如下;

04840af0-fcc3-11ec-ba43-dac502259ad0.png

3 egypt 安裝

egypt官網(wǎng): http://www.gson.org/egypt/

049544b4-fcc3-11ec-ba43-dac502259ad0.png簡(jiǎn)潔的首頁(yè)

下載后的文件為egypt-1.10.tar.gz;找到文件所在路徑;

sudofind-nameegypt-1.10.tar.gz

然后解壓:

sudotar-xvfegypt-1.10.tar.gz

解壓得到egypt-1.10;

cdegypt-1.10&&sduochmod+xegypt

最終可以看到文件結(jié)構(gòu)如下;

04b8cbe6-fcc3-11ec-ba43-dac502259ad0.png

將egypt移動(dòng)到/usr/bin,方便后面直接調(diào)用,或者將當(dāng)前egypt所在路徑添加到環(huán)境變量中;

sudocpegypt/usr/bin

以上,已經(jīng)完成了egypt的安裝;

使用方法如下;

egypt[--omitfunction,function,...][--include-external]...|dotty-
egypt[--omitfunction,function,...][--include-external]...|dot

4 測(cè)試

編寫程序test.c,具體如下所示;

#include

voidtest0();
voidtest1();
voidtest2();
voidtest3();

intmain()
{
test1();
test2();
test3();
return0;
}

voidtest0(void){
printf("hello");
}

voidtest1(void)
{
test0();
}

voidtest2(void)
{
test1();
}

voidtest3(void)
{

}

編譯需要加上參數(shù)-fdump-rtl-expand生成相應(yīng)的dump文件;

gcc-fdump-rtl-expand-ctest.c

04c8f034-fcc3-11ec-ba43-dac502259ad0.png

這里有我們需要的文件test.c.229r.expand;

輸入如下指令;

egypttest.c.229r.expand|dot-Tpng-otest.png

最終生成了順利生成test.png,具體如下圖所示;

04d42850-fcc3-11ec-ba43-dac502259ad0.png最終調(diào)用關(guān)系圖

5 結(jié)論

對(duì)C語(yǔ)言源碼的閱讀用這個(gè)辦法還是有點(diǎn)小麻煩,無(wú)法一鍵生成調(diào)用關(guān)系,,

另外還需要gcc編譯源碼生成dumpfile文件,如果想要方便一些,可能還需要自己寫腳本實(shí)現(xiàn)自動(dòng)化,如果大佬有更好的辦法,歡迎留言區(qū)討論。

原文標(biāo)題:一個(gè)超級(jí)實(shí)用的源碼閱讀小技巧

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145639
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    685

    瀏覽量

    31331
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4417

    瀏覽量

    67538

原文標(biāo)題:一個(gè)超級(jí)實(shí)用的源碼閱讀小技巧

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    資產(chǎn)管理怎么提高效率

    資產(chǎn)管理怎么提高效率資產(chǎn)管理效率提升需從流程自動(dòng)化、數(shù)據(jù)可視化、資源優(yōu)化三方面入手,通過智能工具替代人工操作。廣州杰眾智能科技有限公司的RFID技術(shù)方案,可使資產(chǎn)盤點(diǎn)效率提升90%,閑置資產(chǎn)利用率
    的頭像 發(fā)表于 01-28 16:49 ?462次閱讀
    資產(chǎn)管理怎么<b class='flag-5'>提高效率</b>

    提高系統(tǒng)效率幾個(gè)誤解解析

    才會(huì)提高系統(tǒng)效率。所以在通信系統(tǒng)中一般只打開指令CACHE,數(shù)據(jù)CACHE即使打開也只局限在部分存儲(chǔ)空間,如堆棧部分。同時(shí)也要求程序設(shè)計(jì) 要兼顧C(jī)ACHE的容量及塊大小,這涉及到關(guān)鍵代碼循環(huán)體的長(zhǎng)度
    發(fā)表于 12-15 06:09

    如何提高RCA清洗的效率

    在半導(dǎo)體制造中,RCA清洗作為核心工藝,其效率提升需從化學(xué)、物理及設(shè)備多維度優(yōu)化。以下是基于技術(shù)文獻(xiàn)的系統(tǒng)性策略: 一、化學(xué)體系精準(zhǔn)調(diào)控 螯合劑強(qiáng)化金屬去除 在SC-1/SC-2溶液中添加草酸等
    的頭像 發(fā)表于 11-12 13:59 ?411次閱讀

    怎樣提高單相交流電機(jī)的效率?

    提高單相交流電機(jī)效率是一個(gè)涉及設(shè)計(jì)優(yōu)化、材料選擇、運(yùn)行維護(hù)等多方面的系統(tǒng)工程。以下從技術(shù)原理、實(shí)用方法和前沿趨勢(shì)三個(gè)維度,系統(tǒng)闡述提升效率的可行方案: 一、核心原理與效率瓶頸 單相交流
    的頭像 發(fā)表于 11-12 07:40 ?627次閱讀

    【「高速數(shù)字設(shè)計(jì)(基礎(chǔ)篇)」閱讀體驗(yàn)】+初步上手閱讀

    初步拿到書,閱讀了第一章。感受就是非常講的基礎(chǔ),非常適合小白學(xué)習(xí)。剛好我就是,雖然大學(xué)里也學(xué)過數(shù)電,但是也有一段時(shí)間了,突然讓我將一下D觸發(fā)器,一定是腦袋空空的說(shuō)出什么來(lái)的,但是稍微講一下,就可以
    發(fā)表于 10-21 20:50

    如何提高光刻膠殘留清洗的效率

    提高光刻膠殘留清洗效率需要結(jié)合工藝優(yōu)化、設(shè)備升級(jí)和材料創(chuàng)新等多方面策略,以下是具體方法及技術(shù)要點(diǎn):1.工藝參數(shù)精準(zhǔn)控制動(dòng)態(tài)調(diào)整化學(xué)配方根據(jù)殘留類型(正膠/負(fù)膠、厚膜/薄膜)實(shí)時(shí)匹配最佳溶劑組合。例如
    的頭像 發(fā)表于 09-09 11:29 ?992次閱讀
    如何<b class='flag-5'>提高</b>光刻膠殘留清洗的<b class='flag-5'>效率</b>

    智能小車設(shè)計(jì)源碼和圖紙資料

    智能小車設(shè)計(jì)源碼和圖紙
    發(fā)表于 08-25 15:38 ?1次下載

    【「Yocto項(xiàng)目實(shí)戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)」閱讀體驗(yàn)】01初讀體驗(yàn)

    代碼都混在一起的操作就是個(gè)坑,導(dǎo)致了第三方內(nèi)核源碼過大,甚至找找不到能像看單片機(jī)代碼那樣快速跳轉(zhuǎn)的工具來(lái)閱讀linux源碼,但實(shí)際使用的源碼可能1%都不到) 目錄粗讀 很慚愧,由于之前
    發(fā)表于 06-30 21:49

    玻璃清洗機(jī)能提高清洗效率嗎?使用玻璃清洗機(jī)有哪些好處?

    玻璃清洗機(jī)可以顯著提高清洗效率,并且在許多方面都具有明顯的好處。以下是一些使用玻璃清洗機(jī)的好處:1.提高效率:玻璃清洗機(jī)使用自動(dòng)化和精確的清洗過程,能夠比手工清洗更快地完成任務(wù)。這減少了清洗任務(wù)所需
    的頭像 發(fā)表于 05-28 17:40 ?666次閱讀
    玻璃清洗機(jī)能<b class='flag-5'>提高</b>清洗<b class='flag-5'>效率</b>嗎?使用玻璃清洗機(jī)有哪些好處?

    RFID智能書柜:閱讀新時(shí)代的智慧引擎

    RFID智能書柜以其便捷自助借還、精準(zhǔn)定位與錯(cuò)架提醒、多媒體展示與互動(dòng)等功能,大大提高了圖書管理效率與準(zhǔn)確性。無(wú)論是在大型圖書館還是校園書柜,只需輸入書名或作者等關(guān)鍵詞,智能書柜就能快速鎖定書籍位置,激發(fā)閱讀興趣。
    的頭像 發(fā)表于 05-20 17:06 ?512次閱讀
    RFID智能書柜:<b class='flag-5'>閱讀</b>新時(shí)代的智慧引擎

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗(yàn)】+Agent的案例解讀

    在Agent開發(fā)平臺(tái)扣子上,有許多成功的案例,例如識(shí)典古籍就是基于扣子搭建智能助手所提供的古籍智能化檢索、圖文對(duì)照、語(yǔ)義分析等功能,它極大地提升了用戶的閱讀和研究效率。 客戶及開發(fā)背景? 識(shí)典古籍
    發(fā)表于 05-14 11:23

    智慧閱讀觸手可及——RFID微型圖書館,你了解嗎?

    RFID微型圖書館是一種新型的閱讀模式,通過射頻識(shí)別技術(shù)構(gòu)建的小型化、智能化圖書館設(shè)施。它提供24小時(shí)自助服務(wù)、多種登錄方式、圖書定位與查找、快速盤點(diǎn)圖書和數(shù)據(jù)統(tǒng)計(jì)與分析等功能,極大地提高閱讀體驗(yàn)。
    的頭像 發(fā)表于 04-09 15:37 ?751次閱讀
    智慧<b class='flag-5'>閱讀</b>觸手可及——RFID微型圖書館,你了解嗎?

    Jtti.cc SCDN如何提高內(nèi)容分發(fā)效率

    安全內(nèi)容分發(fā)網(wǎng)絡(luò)(SCDN)是一種集成了安全防護(hù)功能的內(nèi)容分發(fā)網(wǎng)絡(luò)。它不僅能夠加速內(nèi)容的分發(fā),還能有效抵御各種網(wǎng)絡(luò)攻擊,確保內(nèi)容的安全傳輸。以下是 SCDN 提高內(nèi)容分發(fā)效率的具體方法: 1. 全球
    的頭像 發(fā)表于 03-25 16:00 ?569次閱讀

    功率設(shè)備控制可使用過零檢芯片CN71102提高轉(zhuǎn)換效率

    功率設(shè)備控制可使用過零檢芯片CN71102提高轉(zhuǎn)換效率
    的頭像 發(fā)表于 03-25 09:43 ?824次閱讀
    功率設(shè)備控制可使用過零檢芯片CN71102<b class='flag-5'>提高</b>轉(zhuǎn)換<b class='flag-5'>效率</b>

    MDD快恢復(fù)二極管在開關(guān)電源中的應(yīng)用:如何提高轉(zhuǎn)換效率?

    二極管(FRD)因其短反向恢復(fù)時(shí)間(trr)和低開關(guān)損耗,成為提升開關(guān)電源效率的關(guān)鍵元件。本文MDD將探討快恢復(fù)二極管在開關(guān)電源中的作用及如何優(yōu)化其應(yīng)用來(lái)提高轉(zhuǎn)換效率
    的頭像 發(fā)表于 03-25 09:39 ?1042次閱讀
    MDD快恢復(fù)二極管在開關(guān)電源中的應(yīng)用:如何<b class='flag-5'>提高</b>轉(zhuǎn)換<b class='flag-5'>效率</b>?