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

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

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

嵌入式Linux軟件開發(fā):兩款閱讀源代碼的工具對(duì)比

strongerHuang ? 來源:Mculover666 ? 作者:mculover666 ? 2022-03-30 13:52 ? 次閱讀

嵌入式 Linux 軟件開發(fā)的時(shí)候,經(jīng)常會(huì)閱讀大型工程源碼,比如 uboot 源代碼,Linux Kernel 源碼等。

所以,選擇一個(gè)合適的工具來閱讀源代碼,變?yōu)榱艘粋€(gè)經(jīng)久不衰的話題。 閱讀源碼的時(shí)候,其實(shí)無非也就兩個(gè)重要的功能:

① 定義或者聲明快速跳轉(zhuǎn)

② 快速搜索指定內(nèi)容

另外還有一些功能是和開發(fā)體驗(yàn)相關(guān)的,比如:

① 工具的主題(亮色和暗色)

② 工具是否方便修改編輯內(nèi)容

③ 工具是否還提供其它的方便功能

目前常用的就是 Source Insight 和 VS Code,下面就來按照上述需求進(jìn)行對(duì)比,看看哪個(gè)更適合?

創(chuàng)建代碼工程

Source Insight 在閱讀工程代碼時(shí),可以通過創(chuàng)建 Source Insight 工程來選擇哪些文件加入,哪些文件不加入。

對(duì)于 uboot 這種包含有大量板級(jí)文件夾的工程,加入之后其中的文件只和目前移植的這款處理器有關(guān),這個(gè)功能是非常有優(yōu)勢(shì)的,也是眾多工程師喜愛 Source Insight 的原因。

159b3f22-ac30-11ec-aa7f-dac502259ad0.png

相比之下,VS Code并不提供這種選擇加入的功能,VS Code 非常粗暴,文件夾就是工作區(qū),只需要打開源碼文件夾,所有文件全部加入:

15aa8ab8-ac30-11ec-aa7f-dac502259ad0.png

相比之下,我覺得 Source Insight 勝出,VS Code 這種將所有文件一股腦全部加入的方式,在查找文件時(shí)非常麻煩。

文件架構(gòu)

在 Source Insight 中,打開一個(gè)文件的時(shí)候,會(huì)列出當(dāng)前文件中所有預(yù)處理、宏定義、變量、函數(shù)的架構(gòu),如圖:

15bd8b4a-ac30-11ec-aa7f-dac502259ad0.png

在 VS Code 中打開文件時(shí)也有同樣的功能,但又是一股腦的按照順序?qū)⑺泻瘮?shù)聲明和定義列出,實(shí)際查看時(shí)也沒有什么太多作用:

15d68a14-ac30-11ec-aa7f-dac502259ad0.png

在文件整體架構(gòu)方面,Source Insight 勝出,VS Code 對(duì)于代碼架構(gòu)方面的顯示,還需要再優(yōu)化。

定義跳轉(zhuǎn)功能

在 Source Insight 中,可以右鍵跳轉(zhuǎn)函數(shù)聲明或者直接按住 Ctrl 點(diǎn)擊函數(shù)名稱,如果定義有重復(fù)會(huì)先提示,供你選擇,如圖:

15f06308-ac30-11ec-aa7f-dac502259ad0.png

在 VScode 中,首先需要安裝 C/C++擴(kuò)展,然后才支持定義跳轉(zhuǎn),可以按住 Ctrl 鍵點(diǎn)擊或者右鍵跳轉(zhuǎn):

1602db46-ac30-11ec-aa7f-dac502259ad0.png

如果有重復(fù)也會(huì)出現(xiàn)提示,選擇需要查看哪個(gè)定義。 在定義跳轉(zhuǎn)功能上,兩者持平,功能基本都?jí)蛴谩?/p>

全局搜索指定內(nèi)容

在 Source Insight 中,提供的搜索功能如下:

161490b6-ac30-11ec-aa7f-dac502259ad0.png

在 VS Code 中也提供了全局搜索的功能,但是由于它將所有文件都包含進(jìn)來了,無用的搜索結(jié)果比較多:

16290f8c-ac30-11ec-aa7f-dac502259ad0.png

所以,在搜索功能上,由于 Source Insight 先天性的優(yōu)勢(shì),本輪勝出。

主題設(shè)置

閱讀源碼需要很長時(shí)間,所以提供一個(gè)舒服的主題也是很重要的。 Source Insight 提供的主題有:

16391f80-ac30-11ec-aa7f-dac502259ad0.png

VScode 提供的主題就非常棒了:

16449838-ac30-11ec-aa7f-dac502259ad0.png

Source Insight 提供的這些主題我覺得還行,但換出來感覺效果都比較怪,沒有那么舒服,相比之下 VS Code 的主題做的就比較好,無論亮色還是暗色看著都很舒服,對(duì)于我個(gè)人而言,本輪 VS Code 勝出。

其他功能

Source 除了我上述說的主要功能之外,還有非常多的功能,但我都沒怎么用過。 此處,我必須要說一下 VS Code,因?yàn)?Uboot 源碼需要在 linux 上編譯,但是我日常使用的系統(tǒng)是 Windows,所以我一般將 VSCode 安裝在 Windows 上,使用 VS Code 提供的遠(yuǎn)程 SSH 功能,去連接遠(yuǎn)程 Linux 主機(jī),它會(huì)將遠(yuǎn)程主機(jī)上的目錄直接作為工作區(qū),另外還提供了集成終端,修改后直接在終端中編譯即可,如圖:

16637f3c-ac30-11ec-aa7f-dac502259ad0.jpg

另外,VSCode 內(nèi)部集成了 git 可視化功能,可以方便的使用 git 管理代碼。 相比之外,Source Insight 在修改文件之后,還需要把修改的文件上傳到 Linux 服務(wù)器去編譯,過程有點(diǎn)繁瑣。 所以,在額外功能的擴(kuò)展性上,我覺得 VScode 勝出。

總結(jié)

經(jīng)過上述比較,我來說說我的體驗(yàn)和看法:Source Insight 就像是一個(gè)老大哥,基本功很扎實(shí),比如源碼查看,文件架構(gòu)列表這些,很方便實(shí)用,在閱讀代碼的時(shí)候非常方便,但在開發(fā)時(shí)相對(duì)不太方便。對(duì)于它的文件選擇加入功能,其實(shí)我是不太喜歡的,這么龐大的源碼工程,既然我知道哪些文件有用,哪些文件沒用,那我還看啥呢?所以對(duì)初學(xué)者不太友好。而 VS Code 呢,就是一個(gè)年輕小伙,后起之秀,比如主題隨便換,可以遠(yuǎn)程連接 Linux 主機(jī)進(jìn)行開發(fā),Git 可視化擴(kuò)展等等,各種炫酷功能,但是基本功太不扎實(shí),在閱讀源碼時(shí)的基礎(chǔ)功能沒做好,但是在開發(fā)時(shí)非常順手。

審核編輯:郭婷

聲明:本文內(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)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305299
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209537
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式工程師常用的開發(fā)工具有哪些?

    仿真器可以模擬復(fù)雜的微控制器和外設(shè),幫助工程師在早期階段進(jìn)行軟件開發(fā)和調(diào)試。這大大縮短了開發(fā)周期,降低了開發(fā)成本。 總之,嵌入式工程師需要熟練掌握這些
    發(fā)表于 12-20 15:29

    ZLG致遠(yuǎn)電子與麒麟軟件攜手推出兩款銀河麒麟嵌入式工控機(jī)

    近日,ZLG致遠(yuǎn)電子與國產(chǎn)操作系統(tǒng)龍頭企業(yè)麒麟軟件積極響應(yīng)嵌入式產(chǎn)品國產(chǎn)化的大潮,共同推出了兩款重磅級(jí)的銀河麒麟嵌入式操作系統(tǒng)工控機(jī)產(chǎn)品。 這兩款
    的頭像 發(fā)表于 12-16 11:02 ?355次閱讀

    一文了解嵌入式軟件開發(fā)的對(duì)象

    以前應(yīng)用場(chǎng)景很單一,嵌入式開發(fā)可能談不上面向?qū)ο?b class='flag-5'>開發(fā)。但現(xiàn)在,做嵌入式開發(fā),沒有面向?qū)ο?b class='flag-5'>開發(fā),你就有點(diǎn)落伍了。 本文結(jié)合個(gè)人經(jīng)驗(yàn)和周立功《抽象接口技術(shù)和組件
    的頭像 發(fā)表于 11-15 10:31 ?347次閱讀
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>的對(duì)象

    你認(rèn)為嵌入式軟件開發(fā)的盡頭是什么?

    嵌入式軟件開發(fā)的“盡頭”是一個(gè)富有哲理且多維度的概念,因?yàn)樗粌H關(guān)乎技術(shù)發(fā)展的極限,還涉及到行業(yè)應(yīng)用、市場(chǎng)需求、技術(shù)融合與創(chuàng)新等多個(gè)方面。從幾個(gè)不同的視角來看
    的頭像 發(fā)表于 09-18 09:42 ?468次閱讀
    你認(rèn)為<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>的盡頭是什么?

    EsDA,一站嵌入式軟件

    EsDA是一套面向工業(yè)智能物聯(lián)領(lǐng)域的嵌入式系統(tǒng)設(shè)計(jì)自動(dòng)化工具集,包含實(shí)時(shí)操作系統(tǒng)AWorksLP、低代碼開發(fā)平臺(tái)AWStudio、資源管理平臺(tái)AXPI、跨平臺(tái)GUI引擎AWTK和云服務(wù)
    的頭像 發(fā)表于 09-15 08:10 ?290次閱讀
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

    嵌入式開發(fā)常用軟件有哪些?

    查看源代碼,注釋文檔等非常方便,因?yàn)樗檎?,定位,彩色顯示等功能非常強(qiáng)大。開發(fā)人員會(huì)當(dāng)成源代碼閱讀工具使用。 4.Keil uVision5
    發(fā)表于 09-09 15:22

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個(gè)復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動(dòng)開發(fā)、應(yīng)用程序開發(fā)等多個(gè)方面。以下是
    的頭像 發(fā)表于 09-02 09:11 ?497次閱讀

    嵌入式linux開發(fā)板怎么操作

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺(tái)。它通常包括一個(gè)處理器、內(nèi)
    的頭像 發(fā)表于 09-02 09:09 ?395次閱讀

    嵌入式linux開發(fā)板芯片的工作原理

    了處理器、存儲(chǔ)器、輸入/輸出接口等硬件資源的嵌入式系統(tǒng)開發(fā)平臺(tái)。它通常采用Linux操作系統(tǒng)作為底層軟件平臺(tái),提供了豐富的開發(fā)工具和庫函數(shù),
    的頭像 發(fā)表于 09-02 09:07 ?394次閱讀

    嵌入式軟件開發(fā)與AI整合

    嵌入式軟件開發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式
    的頭像 發(fā)表于 07-31 09:25 ?718次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>與AI整合

    好事成雙! 德承推出兩款精簡(jiǎn)緊湊型嵌入式電腦,效能升級(jí),應(yīng)用更廣

    強(qiáng)固型嵌入式電腦品牌 – Cincoze 德承,強(qiáng)勢(shì)推出 Rugged Computing – DIAMOND 系列旗下兩款新精簡(jiǎn)型嵌入式電腦。
    的頭像 發(fā)表于 06-03 15:28 ?217次閱讀
    好事成雙! 德承推出<b class='flag-5'>兩款</b>精簡(jiǎn)緊湊型<b class='flag-5'>嵌入式</b>電腦,效能升級(jí),應(yīng)用更廣

    AMD Vitis? Embedded嵌入式軟件開發(fā)套件的功能和特性概述

    Vitis Embedded 是一獨(dú)立的嵌入式軟件開發(fā)套件,主要用于為 AMD 自適應(yīng) SoC 和 FPGA 中的 AMD 嵌入式處理子系統(tǒng)(基于 ARM 的子系統(tǒng)和 AMD Mic
    的頭像 發(fā)表于 04-08 10:50 ?931次閱讀
    AMD Vitis? Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>套件的功能和特性概述

    嵌入式軟件設(shè)計(jì)的原則分享

    嵌入式軟件開發(fā)如果具有更好的閱讀性、擴(kuò)展性以及維護(hù)性,就需要考慮很多因素。今天給大家分享幾個(gè)嵌入式軟件設(shè)計(jì)的原則。
    發(fā)表于 02-25 10:54 ?688次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>設(shè)計(jì)的原則分享

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識(shí)?

    個(gè)部分組成,其中嵌入式軟件是指在嵌入式系統(tǒng)中運(yùn)行的程序,用于控制硬件并提供特定的功能和服務(wù)。嵌入式軟件
    發(fā)表于 02-19 11:23

    嵌入式軟件開發(fā)軟件開發(fā)的區(qū)別

    嵌入式軟件開發(fā)軟件開發(fā)個(gè)不同的概念,它們?cè)谝恍╆P(guān)鍵方面有著明顯的區(qū)別。嵌入式軟件開發(fā)是指
    的頭像 發(fā)表于 01-22 15:27 ?2292次閱讀