一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲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等利器也很方便;

本文主要通過(guò)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)的開(kāi)源工具包,用于繪制DOT語(yǔ)言腳本描述的圖形。ubuntu下可以直接安裝;

sudoapt-getinstallgraphviz

直接輸入指令后,系統(tǒng)開(kāi)始安裝;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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    8

    文章

    671

    瀏覽量

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

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64907

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    焊接技術(shù)如何提高生產(chǎn)效率

    隨著工業(yè)自動(dòng)化和智能制造的快速發(fā)展,焊接技術(shù)已經(jīng)成為提高生產(chǎn)效率的關(guān)鍵因素之一。 一、引言 在現(xiàn)代制造業(yè)中,焊接技術(shù)是連接金屬部件的主要方法之一,廣泛應(yīng)用于汽車、航空、造船、建筑和重工業(yè)等領(lǐng)域。隨著
    的頭像 發(fā)表于 01-19 14:24 ?885次閱讀

    如何提高SMT生產(chǎn)效率

    在競(jìng)爭(zhēng)激烈的電子制造領(lǐng)域,SMT生產(chǎn)線的效率直接影響到企業(yè)的競(jìng)爭(zhēng)力。 1. 生產(chǎn)流程優(yōu)化 1.1 精益生產(chǎn) 精益生產(chǎn)是一種旨在減少浪費(fèi)、提高效率的生產(chǎn)管理方法。通過(guò)識(shí)別和消除生產(chǎn)過(guò)程中的非增值活動(dòng)
    的頭像 發(fā)表于 01-10 16:28 ?1546次閱讀

    Dali通信如何提高能源效率

    隨著全球能源危機(jī)的加劇和環(huán)境保護(hù)意識(shí)的提高,能源效率成為了現(xiàn)代社會(huì)的一個(gè)重要議題。在建筑領(lǐng)域,照明系統(tǒng)是能耗大戶,因此提高照明系統(tǒng)的能源效率顯得尤為重要。DALI通信作為一種先進(jìn)的照明
    的頭像 發(fā)表于 01-10 10:46 ?507次閱讀

    SOLIDWORKS 2025提高數(shù)據(jù)效率

    隨著技術(shù)的不斷進(jìn)步,CAD軟件在工程設(shè)計(jì)領(lǐng)域的作用日益凸顯。SOLIDWORKS 2025作為新的CAD軟件版本,通過(guò)引入一系列創(chuàng)新功能和優(yōu)化措施,顯著提高了數(shù)據(jù)管理的效率和準(zhǔn)確性。
    的頭像 發(fā)表于 01-07 14:49 ?498次閱讀
    SOLIDWORKS 2025<b class='flag-5'>提高</b>數(shù)據(jù)<b class='flag-5'>效率</b>

    怎樣提高三坐標(biāo)測(cè)量機(jī)的測(cè)量效率

    提高三坐標(biāo)測(cè)量機(jī)的測(cè)量效率是許多制造和質(zhì)量控制領(lǐng)域中的一個(gè)關(guān)鍵問(wèn)題。三坐標(biāo)測(cè)量機(jī)(CMM)是一種精密的測(cè)量設(shè)備,用于檢測(cè)零件的幾何尺寸和形狀。以下是一些提高三坐標(biāo)測(cè)量機(jī)測(cè)量效率的方法,
    的頭像 發(fā)表于 12-19 10:20 ?1098次閱讀

    如何提高poe供電效率

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

    如何提高CNC加工效率

    在當(dāng)今競(jìng)爭(zhēng)激烈的制造業(yè)環(huán)境中,提高CNC加工效率是企業(yè)保持競(jìng)爭(zhēng)力的關(guān)鍵。CNC機(jī)床的效率不僅影響生產(chǎn)成本,還關(guān)系到產(chǎn)品質(zhì)量和交貨速度。 1. 優(yōu)化CNC程序 1.1 減少空行程 CNC程序中的空行
    的頭像 發(fā)表于 11-12 09:18 ?1987次閱讀

    如何提高伺服驅(qū)動(dòng)器的效率

    在現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域,伺服驅(qū)動(dòng)器的效率對(duì)于整個(gè)系統(tǒng)的能效和性能至關(guān)重要。本文探討了影響伺服驅(qū)動(dòng)器效率的關(guān)鍵因素,并提出了一系列提高效率的策略,包括優(yōu)化控制算法、改善硬件設(shè)計(jì)、采用先進(jìn)的功率電子技術(shù)
    的頭像 發(fā)表于 11-04 15:20 ?1334次閱讀

    MES系統(tǒng)如何提高生產(chǎn)效率

    在當(dāng)今競(jìng)爭(zhēng)激烈的制造行業(yè)中,提高生產(chǎn)效率是企業(yè)生存和發(fā)展的關(guān)鍵。MES系統(tǒng)作為一種先進(jìn)的制造管理工具,已經(jīng)成為許多制造企業(yè)提高生產(chǎn)效率的重要手段。 1. 實(shí)時(shí)監(jiān)控與數(shù)據(jù)收集 MES系統(tǒng)
    的頭像 發(fā)表于 10-27 09:16 ?901次閱讀

    如何提高云計(jì)算的性能和效率

    提高云計(jì)算的性能和效率是一個(gè)多維度的問(wèn)題,需要從計(jì)算性能、存儲(chǔ)性能、網(wǎng)絡(luò)性能等多個(gè)方面入手。以下是一些具體的策略和方法: 一、計(jì)算性能優(yōu)化 資源分配 : 根據(jù)用戶需求動(dòng)態(tài)分配資源,以提高服務(wù)器
    的頭像 發(fā)表于 10-24 09:23 ?1081次閱讀

    預(yù)測(cè)性柵極驅(qū)動(dòng)提高轉(zhuǎn)換器效率

    電子發(fā)燒友網(wǎng)站提供《預(yù)測(cè)性柵極驅(qū)動(dòng)提高轉(zhuǎn)換器效率.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:17 ?0次下載
    預(yù)測(cè)性柵極驅(qū)動(dòng)<b class='flag-5'>提高</b>轉(zhuǎn)換器<b class='flag-5'>效率</b>

    提高LLC轉(zhuǎn)換器的ZVS和效率

    電子發(fā)燒友網(wǎng)站提供《提高LLC轉(zhuǎn)換器的ZVS和效率.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 10:03 ?7次下載
    <b class='flag-5'>提高</b>LLC轉(zhuǎn)換器的ZVS和<b class='flag-5'>效率</b>

    通過(guò)布局提高DC-DC轉(zhuǎn)換的效率

    電子發(fā)燒友網(wǎng)站提供《通過(guò)布局提高DC-DC轉(zhuǎn)換的效率.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 11:45 ?0次下載
    通過(guò)布局<b class='flag-5'>提高</b>DC-DC轉(zhuǎn)換的<b class='flag-5'>效率</b>

    提高高開(kāi)關(guān)頻率下更高負(fù)載的效率應(yīng)用報(bào)告

    電子發(fā)燒友網(wǎng)站提供《提高高開(kāi)關(guān)頻率下更高負(fù)載的效率應(yīng)用報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:33 ?0次下載
    <b class='flag-5'>提高</b>高開(kāi)關(guān)頻率下更高負(fù)載的<b class='flag-5'>效率</b>應(yīng)用報(bào)告