衡阳派盒市场营销有限公司

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語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137725
  • 源碼
    +關注

    關注

    8

    文章

    652

    瀏覽量

    29457
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62977

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

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

收藏 人收藏

    評論

    相關推薦

    焊接技術如何提高生產效率

    隨著工業自動化和智能制造的快速發展,焊接技術已經成為提高生產效率的關鍵因素之一。 一、引言 在現代制造業中,焊接技術是連接金屬部件的主要方法之一,廣泛應用于汽車、航空、造船、建筑和重工業等領域。隨著
    的頭像 發表于 01-19 14:24 ?345次閱讀

    如何提高SMT生產效率

    在競爭激烈的電子制造領域,SMT生產線的效率直接影響到企業的競爭力。 1. 生產流程優化 1.1 精益生產 精益生產是一種旨在減少浪費、提高效率的生產管理方法。通過識別和消除生產過程中的非增值活動
    的頭像 發表于 01-10 16:28 ?362次閱讀

    Dali通信如何提高能源效率

    隨著全球能源危機的加劇和環境保護意識的提高,能源效率成為了現代社會的一個重要議題。在建筑領域,照明系統是能耗大戶,因此提高照明系統的能源效率顯得尤為重要。DALI通信作為一種先進的照明
    的頭像 發表于 01-10 10:46 ?124次閱讀

    SOLIDWORKS 2025提高數據效率

    隨著技術的不斷進步,CAD軟件在工程設計領域的作用日益凸顯。SOLIDWORKS 2025作為新的CAD軟件版本,通過引入一系列創新功能和優化措施,顯著提高了數據管理的效率和準確性。
    的頭像 發表于 01-07 14:49 ?144次閱讀
    SOLIDWORKS 2025<b class='flag-5'>提高</b>數據<b class='flag-5'>效率</b>

    怎樣提高三坐標測量機的測量效率

    提高三坐標測量機的測量效率是許多制造和質量控制領域中的一個關鍵問題。三坐標測量機(CMM)是一種精密的測量設備,用于檢測零件的幾何尺寸和形狀。以下是一些提高三坐標測量機測量效率的方法,
    的頭像 發表于 12-19 10:20 ?379次閱讀

    如何提高poe供電效率

    提高PoE(Power over Ethernet,以太網供電)供電效率是一個涉及多個方面的綜合性問題。以下是一些具體的建議,旨在幫助提高PoE供電效率: 一、優化PoE設備選擇與設計
    的頭像 發表于 11-19 10:45 ?334次閱讀

    如何提高CNC加工效率

    在當今競爭激烈的制造業環境中,提高CNC加工效率是企業保持競爭力的關鍵。CNC機床的效率不僅影響生產成本,還關系到產品質量和交貨速度。 1. 優化CNC程序 1.1 減少空行程 CNC程序中的空行
    的頭像 發表于 11-12 09:18 ?911次閱讀

    如何提高伺服驅動器的效率

    在現代工業自動化領域,伺服驅動器的效率對于整個系統的能效和性能至關重要。本文探討了影響伺服驅動器效率的關鍵因素,并提出了一系列提高效率的策略,包括優化控制算法、改善硬件設計、采用先進的功率電子技術
    的頭像 發表于 11-04 15:20 ?533次閱讀

    MES系統如何提高生產效率

    在當今競爭激烈的制造行業中,提高生產效率是企業生存和發展的關鍵。MES系統作為一種先進的制造管理工具,已經成為許多制造企業提高生產效率的重要手段。 1. 實時監控與數據收集 MES系統
    的頭像 發表于 10-27 09:16 ?394次閱讀

    如何提高云計算的性能和效率

    提高云計算的性能和效率是一個多維度的問題,需要從計算性能、存儲性能、網絡性能等多個方面入手。以下是一些具體的策略和方法: 一、計算性能優化 資源分配 : 根據用戶需求動態分配資源,以提高服務器
    的頭像 發表于 10-24 09:23 ?634次閱讀

    預測性柵極驅動提高轉換器效率

    電子發燒友網站提供《預測性柵極驅動提高轉換器效率.pdf》資料免費下載
    發表于 10-21 09:17 ?0次下載
    預測性柵極驅動<b class='flag-5'>提高</b>轉換器<b class='flag-5'>效率</b>

    提高LLC轉換器的ZVS和效率

    電子發燒友網站提供《提高LLC轉換器的ZVS和效率.pdf》資料免費下載
    發表于 10-14 10:03 ?0次下載
    <b class='flag-5'>提高</b>LLC轉換器的ZVS和<b class='flag-5'>效率</b>

    東莞mes系統:提高生產效率的利器

    東莞作為中國制造業的重要基地之一,擁有眾多制造企業,其中不乏一些領先的MES系統供應商。這些 MES系統供應商 致力于為東莞的制造企業提供智能制造解決方案,幫助企業提高生產效率、降低生產成本、提升
    的頭像 發表于 05-21 15:37 ?495次閱讀

    深圳MES系統如何提高生產效率

    深圳MES系統可以通過多種方式提高生產效率,具體如下: 實時監控和分析:MES系統可以實時收集并分析生產數據,幫助企業及時了解生產狀況,發現問題并迅速解決,避免問題擴大化。這種實時監控和分析功能可以
    的頭像 發表于 03-25 14:34 ?497次閱讀

    提高效率的DC電源模塊設計技巧

    BOSHIDA ?提高效率的DC電源模塊設計技巧 設計高效率的BOSHIDA ?DC電源模塊可以幫助減少能源浪費和提高系統功耗,以下是一些設計技巧: 1. 選擇高效率的功率轉換器:選擇
    的頭像 發表于 02-26 14:27 ?626次閱讀
    <b class='flag-5'>提高效率</b>的DC電源模塊設計技巧
    百家乐官网平台下载| 百家乐官网优博娱乐城| 百家乐官网网上赌博网| 百家乐官网路单统| 闲和庄百家乐的玩法技巧和规则| 大发888游戏平台 34| 百家乐官网攻略投注法| 长城百家乐游戏| 威尼斯人娱乐城博彩网| 赣榆县| 大三元百家乐官网的玩法技巧和规则 | 百家乐博百家乐的玩法技巧和规则 | 百家乐官网高手和勒威| 院子围墙砌18还是24| 大发888怎么刷钱| 赙彩百家乐官网游戏规则| 克拉克百家乐下载| 丹东亿酷棋牌世界官方下载| 澳门百家乐官网玩法心得技巧 | 大发888娱乐城下载电脑怎么上乐讯新足球今日比分 | 澳门百家乐真人娱乐场| 开户娱乐城送20彩金| 网络百家乐官网打揽| 新濠百家乐娱乐城| 新澳博百家乐官网现金网| 真人百家乐平台下载| 云顶国际娱乐开户| 网上百家乐官网公司| 大发888注册账号| 百家乐官网巴厘岛上海在线| 名人百家乐的玩法技巧和规则 | 网络真人赌场| 现金百家乐官网下载| 现场百家乐的玩法技巧和规则 | 哪个百家乐官网投注比较好| 百家乐的薇笑打法| 豪博百家乐官网现金网| 网上百家乐官网新利| 博联百家乐游戏| 在线真人娱乐| 赌博百家乐经验网|