国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何提高閱讀源碼的效率

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

掃碼添加小助手

加入工程師交流群

我發現函數調用圖可以讓我們更加直觀地了解到源碼函數直接的調用和層次關系,提高閱讀源碼的效率。

1 前言

看源碼的時候,心血來潮想弄一下函數之前的調用關系,想起以前doxygen配合graphviz使用可以生成比較直觀的函數調用關系圖,但是前提是函數的注釋需要嚴格按照doxygen的規范,具體可以自己去搜索一下,當然使用source insight等利器也很方便;

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

045f7db6-fcc3-11ec-ba43-dac502259ad0.png一個例子

2 graphviz 安裝

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

sudoapt-getinstallgraphviz

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

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

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

3 egypt 安裝

egypt官網: http://www.gson.org/egypt/

049544b4-fcc3-11ec-ba43-dac502259ad0.png簡潔的首頁

下載后的文件為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

最終可以看到文件結構如下;

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

將egypt移動到/usr/bin,方便后面直接調用,或者將當前egypt所在路徑添加到環境變量中;

sudocpegypt/usr/bin

以上,已經完成了egypt的安裝;

使用方法如下;

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

4 測試

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

#include

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

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

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

voidtest1(void)
{
test0();
}

voidtest2(void)
{
test1();
}

voidtest3(void)
{

}

編譯需要加上參數-fdump-rtl-expand生成相應的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最終調用關系圖

5 結論

C語言源碼的閱讀用這個辦法還是有點小麻煩,無法一鍵生成調用關系,,

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

原文標題:一個超級實用的源碼閱讀小技巧

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145561
  • 源碼
    +關注

    關注

    8

    文章

    685

    瀏覽量

    31317
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67499

原文標題:一個超級實用的源碼閱讀小技巧

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    資產管理怎么提高效率

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

    提高系統效率幾個誤解解析

    才會提高系統效率。所以在通信系統中一般只打開指令CACHE,數據CACHE即使打開也只局限在部分存儲空間,如堆棧部分。同時也要求程序設計 要兼顧CACHE的容量及塊大小,這涉及到關鍵代碼循環體的長度
    發表于 12-15 06:09

    如何提高RCA清洗的效率

    在半導體制造中,RCA清洗作為核心工藝,其效率提升需從化學、物理及設備多維度優化。以下是基于技術文獻的系統性策略: 一、化學體系精準調控 螯合劑強化金屬去除 在SC-1/SC-2溶液中添加草酸等
    的頭像 發表于 11-12 13:59 ?407次閱讀

    怎樣提高單相交流電機的效率

    提高單相交流電機效率是一個涉及設計優化、材料選擇、運行維護等多方面的系統工程。以下從技術原理、實用方法和前沿趨勢三個維度,系統闡述提升效率的可行方案: 一、核心原理與效率瓶頸 單相交流
    的頭像 發表于 11-12 07:40 ?604次閱讀

    【「高速數字設計(基礎篇)」閱讀體驗】+初步上手閱讀

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

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

    提高光刻膠殘留清洗效率需要結合工藝優化、設備升級和材料創新等多方面策略,以下是具體方法及技術要點:1.工藝參數精準控制動態調整化學配方根據殘留類型(正膠/負膠、厚膜/薄膜)實時匹配最佳溶劑組合。例如
    的頭像 發表于 09-09 11:29 ?970次閱讀
    如何<b class='flag-5'>提高</b>光刻膠殘留清洗的<b class='flag-5'>效率</b>

    智能小車設計源碼和圖紙資料

    智能小車設計源碼和圖紙
    發表于 08-25 15:38 ?1次下載

    【「Yocto項目實戰教程:高效定制嵌入式Linux系統」閱讀體驗】01初讀體驗

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

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

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

    RFID智能書柜:閱讀新時代的智慧引擎

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

    【「零基礎開發AI Agent」閱讀體驗】+Agent的案例解讀

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

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

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

    Jtti.cc SCDN如何提高內容分發效率

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

    功率設備控制可使用過零檢芯片CN71102提高轉換效率

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

    MDD快恢復二極管在開關電源中的應用:如何提高轉換效率

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