平時在開發嵌入式程序的時候大多數使用的都是keil軟件,一般小的工程使用keil沒感覺到有什么問題,但是當工程比較大的時候,比如移植了FreeRTOS系統或者LWIP網絡系統時,代碼全部編譯一次就要花費很長時間,特別是開啟了點擊函數右鍵跳轉的功能之后,速度更加慢。有時候只是為了查看一下代碼,為了能夠使用函數跳轉功能,就不得不把工程全部編譯一遍。
??為了提高開發效率,一般查看代碼的時候會使用vscode 和 source insight 這類軟件,但是vscode占用內存比較大,電腦配置比較低的話,電腦就會比較卡。source insight占用內存比較小,功能和使用方法上感覺沒有vscode方便,但是source insight 有個優點就是可以查看函數調用關系圖。
??這個功能用起來感覺很方便,特別是查看別人代碼的時候,能有一個直觀的感受。于是平時就是vscode 和 source insight 這兩個軟件交替使用。
??直到前幾天無意中發現了Understand這個軟件之后,vscode 和 source insight 就再也不想用了,特別是Understand 強大函數關系圖生成功能。用一次之后就再也回不去了。先上一張圖感受下。
??下面就詳細說一下如何使用Understand軟件。在瀏覽器中直接搜索Understand 進行下載安裝破解,具體過程網上教程很多,這里就不再演示了。
??下載安裝完成之后,打開軟件。
??如果要查看代碼的話,不能像vscode那樣直接把文件夾拖入到軟件界面中直接打開。要使用這個軟件必須給要查看代碼先建一個工程。
??在桌面上新建一個code文件夾準備存放Understand的工程文件,FreeRTOS移植實驗是要查看的代碼。也可以不新建code文件夾,Understand的把工程文件直接存放在FreeRTOS移植實驗里面。
??不過我一般習慣在將Understand的工程文件單獨放在另外的目錄里面。這樣查看別人的代碼時,不會破壞keil工程文件的完整性。
??接下來在Understand軟件中新建工程,選擇文件–新建–工程。
??在彈出的界面中點 添加文件夾按鈕,添加要查看的keil工程文件夾。
??這里選擇要查看的這個 FreeRTOS移植實驗
??單擊繼續按鈕
??選擇第二個選項,不編譯代碼。
??接下來選擇Understand工程文件存放目錄,默認會創建在keil工程目錄里面,在這里將工程目錄設置為剛才新建code文件夾路徑。
??單擊后面的 … 按鈕,將工程路徑選擇為code文件夾,然后點保存按鈕。
??工程路徑設置好之后,單擊創建工程按鈕,開始新建工程。新建工程的時候需要花費十幾秒的時候對工程文件進行掃描,這里要耐心等待一會。
??工程掃描完成之后,就會自動出現一個工程文件分析的界面,在這個界面中可以看到工程里面各部分代碼的占比情況。
??第一個圖展示的是代碼、注釋、未使用、預編譯、空白 這些占用行數。
??第二張圖展示的是不同代碼在工程中的占比。通過這個可以看出FreeRTOS占30.1%,庫函數占了62.7%。
??通過下面的柱形圖中還能看出比較占比比較大的函數和文件。
??通過這個整體的分析圖讓我們對這個工程文件構成有一個整體的印象。下面開始使用這個軟件對代碼進行具體的分析。在軟件界面的左側選擇工程瀏覽,然后打開user文件夾里面的main.c文件。
??在main.c文件中雙擊選中main函數,然后在工具欄中點這個連接按鈕。
??在這里選擇第一個選項
??
此時就會顯示出main函數中調用了哪些函數。
??這里默認情況下只顯示了1層的調用關系,如果要顯示多層調用關系還需要設置一下。界面有右上方有兩個 三條橫線的圖標,點擊下面這個三條橫線圖標。
??將這個被調用的深度設置為3。
??接著把調用深度也設置為3。
??接下來就會重新生成一個函數調用關系圖。
??滾動鼠標滾輪可以放大縮小這個關系調用圖。
??通過這個關系調用圖就可以很清晰的看出來main函數分別調用了哪些函數,而這些函數里面又繼續調用了哪些函數。這樣即使不用看代碼直接通過這個函數調用關系圖就能看出來main函數里面都完成了哪些功能。
??接下來依然選擇main函數,在關系調用中選擇第二個功能。
??通過右上角的的選項按鈕將層設置為5,這樣就會顯示出一個5層的調用關系圖。
??在這個調用關系中可以看到,好多函數都調用了同一個函數。而有些函數是我們不需要關心的,那么就可以在這個函數上單擊鼠標右鍵,選擇隱藏,將這個函數隱藏掉不顯示。
??如果想要重點關心某一個函數的調用關系,可以在函數上右鍵,選擇高亮顯示。比如在這里要重點關心任務創建函數。
??此時任務創建函數前面和它相關函數和路線都會被高亮顯示。
??如果想進一步了解這個函數的其他信息,可以在這個函數上單擊鼠標右鍵,在屬性中查看,這里就不再一一列舉了。
??接下來看關系調用的第三個選項。
??此時就會生出一個main函數內部的執行流程。
??接下來看關系調用的第四個選項。
??這個列出來了main函數調用的函數和main函數的返回值。
??接下來看關系調用的第五個選項。
??這個列出來了main函數所包含的頭文件和宏定義
??接下來看關系調用的最后一個選項。
??這個會顯示出main函數調用的那些初始化函數都包含在哪些c文件中。
??通過上面這個6種功能,可以對main函數和其他函數的調用關系進行各種方式的分析,讓我們對這個工程代碼能進一步的深入了解。
??同樣Understand軟件也可以直接查看代碼。如果要跳轉到函數內部時,按住ctrl鍵,單擊鼠標左鍵,就能直接跳轉到函數中。后退一步的快捷鍵是ctrl+alt+p 。
??如果想要使用快捷鍵的話,可以在菜單欄選擇Tool—options
??在打開的設置界面中選擇Key Bindings,在右邊區域中就可以查看和設置快捷鍵。
??查看函數的時候,在函數開始位置的大括號處雙擊鼠標左鍵,就會自動選中函數所包含的代碼塊。
??將鼠標放在函數名上面時,會顯示函數的參數和返回值。同樣將鼠標放在宏定義的值上時,會顯示宏定義的值。
??這個軟件還有很多強大的功能,在這里只是粗略的介紹了一下,其他功能大家在使用的過程中自己慢慢探索。
-
軟件
+關注
關注
69文章
4774瀏覽量
87162 -
函數
+關注
關注
3文章
4306瀏覽量
62430 -
代碼
+關注
關注
30文章
4748瀏覽量
68355
發布評論請先 登錄
相關推薦
評論