精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux源代碼分析工具鏈介紹

系統 Linux 系統運維
看源代碼是一個程序員必須經歷的事情,也是可以提升能力的一個捷徑。個人認為:要完全掌握一個軟件的方法只有閱讀源碼。在Windows下有sourceinsight這個源碼閱讀軟件,由于我是個Linuxer,并不喜歡用Windows,所以自然是選擇在Linux下閱讀源碼的工具了。

前言

看源代碼是一個程序員必須經歷的事情,也是可以提升能力的一個捷徑。個人認為:要完全掌握一個軟件的方法只有閱讀源碼。

在Windows下有sourceinsight這個源碼閱讀軟件(雖然我沒用過,但是網上評價還不錯),由于我是個Linuxer,并不喜歡用Windows,所以自然是選擇在Linux下閱讀源碼的工具了。

下面我將逐一介紹在Linux下閱讀源碼的工具。

vim+ctags+cscope

源碼閱讀三劍客:vim配合ctags和cscope,足以在源代碼里面自由翱翔,在函數和變量間自由跳轉。

安裝

  1. sudo apt-get install vim ctags cscope

vim

vim的使用就略過了,網上資料很多,不是一篇文章能說完的,未來我可能會寫一篇vim的使用心得。推薦一篇簡明 Vim 練級攻略,看完就差不多會用了。

ctags

ctags的使用很簡單,vim已經內置了對ctags的支持。

首先在源代碼根目錄執行ctags -R,遞歸的為源碼建立tags,在根目錄會生成一個Tags的文件,存放各種函數和變量的tag,便于跳轉:

  • 使光標在函數或變量上,Ctrl + ]即可跳轉到其定義處
  • Ctrl + t可以回到你跳轉之前的位置

對于簡單的代碼,ctags就夠用了,但是對于比較復雜的代碼來說,ctags顯得有點力不從心,于是,下一位劍客就登場了。

cscope

vim同樣內置了對cscope的支持。

首先在源代碼根目錄執行cscope -Rbq,就會生成cscope.out文件(索引數據庫)

  • -R: 在生成索引文件時,搜索子目錄樹中的代碼
  • -b: 只生成索引文件,不進入cscope的界面
  • -q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

然后在vim中執行:cs add cscope.out,添加數據庫。

接下來就可以使用:cs find x var進行查找。(x代表查詢選項,var表示要查找的函數或變量名)

cscope支持8種查詢方式

  • s: 查找C語言符號,即查找函數名、宏、枚舉值等出現的地方
  • g: 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
  • d: 查找本函數調用的函數
  • c: 查找調用本函數的函數
  • t: 查找指定的字符串
  • e: 查找egrep模式,相當于egrep功能,但查找速度快多了
  • f: 查找并打開文件,類似vim的find功能
  • i: 查找包含本文件的文件

例如,我們想在vim 7.0的源代碼中查找調用do_cscope()函數的函數,我們可以輸入:”:cs find c do_cscope“,回車后發現沒有找到匹配的功能,可能并沒有函數調用do_cscope()。我們再輸入”:cs find s do_cscope“,查找這個C符號出現的位置,現在vim列出了這個符號出現的所有位置。

每次都有輸入cs find來查找數據是不是有點麻煩,有沒有更方便的方法呢。當然有,vim的神奇之處在其可定制性。提供一份cscope的配置,將其放在.vimrc中即可。

  1. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  2. " cscope setting
  3. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  4. if has("cscope")
  5. set csprg=/usr/bin/cscope
  6. set csto=1
  7. set cst
  8. set nocsverb
  9. " add any database in current directory
  10. if filereadable("cscope.out")
  11. cs add cscope.out
  12. endif
  13. set csverb
  14. endif
  15.  
  16. nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
  17. nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
  18. nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
  19. nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
  20. nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
  21. nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
  22. nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
  23. nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>

上面的配置即把Ctrl + @作為:cs find的快捷鍵,也就是說要查找某個函數名,只需要把光標放在函數名上,按下Ctrl + @ + s即可,簡直不能更方便。而且你可以自己修改配置,映射到自己覺得舒服的快捷鍵上。

本著不重復造輪子的原則,我就簡單的寫了cscope的基本用法,其實基本上就夠用了,進階的用法參考這篇文章vi/vim使用進階: 程序員的利器 – cscope

#p#

doxygen

上面我們講的是用vim來查看源代碼,但是面對幾十萬代碼的時候,想要看清楚各個結構體之間的關系就不是vim能夠做到的了。這時候我們就需要doxygen來幫手了。

Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.

doxygen是一個根據源代碼生成文檔的工具,這貨雖然主要是給C++用的,但是它也對其他語言有支持。

安裝直接去官網,按照其指導安裝即可。

下面介紹一下doxygen的使用方法。

首先,在源代碼根目錄執行doxygen -g,然后在根目錄就會突然冒出一個名為Doxyfile的文件,這個文件就是doxygen生成文檔的配置文件了。

那么,重點來了,怎么配置這個文件,默認的配置是根據代碼生成各個結構體的成員數據,然后生成html和latex兩個文件夾,分別是網頁和latex文檔。

說實話,默認生成的文檔并沒有什么卵用,除了讓你更方便的看到各個結構體的組成成員。我們關心的是各個結構體之間的關系,這是針對C而言的。對與C++和java而言,關心的是類之間的關系。所以,默認的配置肯定是要修改的。至于怎么改,看官方文檔

當然了,如果這篇文章唯一給出的建議就是看文檔,那這篇文章有什么意義呢。大家都知道看文檔可以解決問題,但是時間成本太高,而且是英文的。寫這篇文章的目的是分享自己學習得到的經驗,讓大家少走彎路,如果不能解決你的問題,只能去看文檔了。

接下來我根據我自己看文檔用到的配置跟大家解釋一下。

首先,Doxygen里面的配置可謂又臭又長,你絕對不會有讀完它的欲望。所以我給出幾個關鍵的配置項,到時候搜索它修改即可

  • 這是針對各種語言優化輸出的選項,默認都是NO,因為它不清楚你用的是什么語言(話說看一下后綴不就知道了嗎…)

    1. OPTIMIZE_OUTPUT_FOR_C
    2. OPTIMIZE_OUTPUT_JAVA
    3. OPTIMIZE_FOR_FORTRAN
    4. OPTIMIZE_OUTPUT_VHDL
  • 這個是生成文檔的類型的選項,默認生成html和latex,共支持六種類型的文檔,每種類型的生成配置也是很多,具體根據需要配置

    1. GENERATE_HTML
    2. GENERATE_LATEX
    3. GENERATE_RTF
    4. GENERATE_XML
    5. GENERATE_DOCBOOK
    6. GENERATE_MAN
  • 關于生成圖像的選項。doxygen使用dot這個工具來繪圖,所以要先執行sudo apt-get install graphviz安裝dot。在設置好這個繪圖選項之后,doxygen就會生成各個結構體的關系,對于類會生成函數調用關系(我沒試過,因為只試過C的)。

    1. HAVE_DOT (一定要置為YES,后面的選項都依賴這個)
    2. DOT_NUM_THREADS (使用dot繪圖的線程數量,越多越快,我一般是設置跟cpu的核數一樣)

給一個結構體關系圖,就是doxygen生成的。

[machine_class]

最后一步,在源碼根目錄執行doxygen,它會自動找到Doxygen配置,根據配置生成文檔。

gdb

最后一個工具,大名鼎鼎的gdb。分析源碼執行流程的最好方式的是運行它,然后一步步執行。用來觀察它最好的工具當然是gdb了(針對C/C++)。

gdb的使用我也不打算造輪子,直接參考用GDB調試程序,這篇寫的很好,通俗易懂。

后記

以上就是我在閱讀源碼的時候使用的Linux工具,三劍客vim+ctags+cscope,兩板斧doxygen gdb,足以馳騁源代碼的江湖。

以上工具,vim和gdb是最難學的,學習曲線很陡峭。但是學好之后,就能守得云開見月明。

責任編輯:火鳳凰 來源: ShareHub博客
相關推薦

2015-08-28 09:38:51

Linux源代碼分析工具

2021-10-01 12:17:30

Facebook開源工具Mariana Tre

2011-08-02 10:13:30

Java工具

2011-02-23 15:33:42

FileZilla

2011-02-23 14:26:28

FileZilla

2011-02-23 13:47:33

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 15:21:06

FileZilla

2011-02-23 15:11:27

FileZilla

2011-02-23 14:16:43

FileZilla

2011-02-23 14:54:58

FileZilla

2011-02-23 14:46:21

FileZilla

2011-02-23 14:39:27

FileZilla

2009-03-10 08:59:18

2010-03-18 14:46:18

Java SynDem

2010-01-26 13:14:48

2018-05-25 14:16:55

NFS源代碼線程

2010-02-24 16:14:26

Linux內存

2010-03-19 16:51:53

Java Socket

2021-07-07 05:53:23

PythonPython 語法加密源代碼
點贊
收藏

51CTO技術棧公眾號

国产综合色在线| 久久国产精品色av免费看| 亚洲视频在线一区观看| 91网站在线看| 国产第一页第二页| 婷婷国产精品| 欧美精选在线播放| 日韩在线视频在线| 欧美自拍偷拍第一页| 男人的天堂亚洲| 操日韩av在线电影| 97人妻天天摸天天爽天天| 韩国精品视频在线观看| 亚洲成人av一区二区| 日韩一区免费观看| 草草视频在线播放| 日韩经典中文字幕一区| 欧美极品少妇全裸体| 欧美亚洲色综久久精品国产| 亚洲五码在线| 欧美日韩午夜在线| 久久久免费视频网站| 成人短视频在线观看| 91色porny| 成人亚洲激情网| www.com国产| 欧美三级第一页| 日韩中文字幕精品视频| 88av在线播放| 一区二区三区高清在线观看| 在线播放日韩导航| www.色就是色| 中文字幕 在线观看| 亚洲一二三四区| 日本三日本三级少妇三级66| aiai在线| 国产三级一区二区三区| 久久久影院一区二区三区 | 欧美日本一区二区视频在线观看 | 密臀av在线播放| 亚洲乱码国产乱码精品精98午夜 | 老司机99精品99| 国产亚洲精品免费| 久久精品一区二区三区不卡免费视频| xxxwww在线观看| 国产一区二区福利视频| 国产在线播放不卡| 怡春院在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 538国产精品视频一区二区| 国产污视频在线观看| 激情偷拍久久| 久久久亚洲精品视频| 久久久久久蜜桃| 在线成人亚洲| 久久久久久国产免费| 国产一级片免费观看| 欧美精品入口| 久久久伊人欧美| 日韩免费不卡视频| 亚洲精选一区| 欧美亚洲成人网| 老熟妇仑乱一区二区av| 久久精品伊人| 国产精品美女999| 亚洲在线视频播放| 捆绑调教一区二区三区| 91中文在线观看| 精品人妻伦一二三区久久| 国产成人免费xxxxxxxx| 国内精品久久国产| 蜜桃视频在线观看网站| 国产欧美精品一区二区色综合| 亚洲精品在线免费看| 欧美高清视频| 亚洲一级电影视频| 欧美污视频网站| 欧美91在线|欧美| 欧美一级日韩一级| 欧洲熟妇的性久久久久久| 丝袜美腿综合| 色悠悠久久88| 动漫精品一区一码二码三码四码| 国产欧美二区| 国产精品视频成人| av中文字幕第一页| 99久久国产综合精品色伊| 日本成人黄色免费看| 精品国产白色丝袜高跟鞋| 亚洲最大的成人av| 不卡影院一区二区| 欧美视频三区| 亚洲精品资源在线| 欧美成人777| 一区二区三区国产在线| 国产精品色悠悠| 亚洲AV无码精品色毛片浪潮| 久久久综合视频| 在线视频一二三区| 中文字幕在线视频网站| 欧美在线观看视频一区二区三区| 99国产精品免费视频| 亚洲aa在线| 久久久黄色av| 一级片免费在线播放| 国产福利一区二区三区视频在线| 麻豆精品传媒视频| 在线观看三级视频| 欧美综合视频在线观看| 一二三区视频在线观看| 日韩成人a**站| 欧美性受xxxx黑人猛交| 国产特级黄色片| 国产视频视频一区| 三上悠亚久久精品| 日本精品在线观看| 深夜成人在线观看| 国产一级做a爱免费视频| 麻豆一区二区在线| 蜜桃视频日韩| sm捆绑调教国产免费网站在线观看 | 中文字幕亚洲一区二区三区| 日本在线免费观看| 国产激情偷乱视频一区二区三区 | 中文字幕av亚洲精品一部二部| 日本久久久久久久久| 亚洲乱码精品久久久久..| 国产精品免费av| 老司机午夜av| 日韩激情网站| 久久人人爽人人爽人人片av高清| 国产免费av观看| 中文一区在线播放| 激情五月亚洲色图| 蜜桃a∨噜噜一区二区三区| 久久久最新网址| 国产后入清纯学生妹| 1000精品久久久久久久久| 北条麻妃av高潮尖叫在线观看| 久久精品国产亚洲5555| 国内精品久久久久久久| 亚洲精品97久久中文字幕无码| 中文字幕色av一区二区三区| 五月天亚洲视频| 日韩国产一区| 国产精品中文久久久久久久| 国产高清自拍视频在线观看| 在线视频欧美区| 国产极品视频在线观看| 蜜臀99久久精品久久久久久软件| 日韩中文字幕一区| 日韩精品影片| 一区二区三区日韩在线| 中国一级片黄色一级片黄| 欧美国产精品久久| 爱爱爱爱免费视频| 婷婷综合五月| 波多野结衣精品久久| 久久青青色综合| 亚洲国产精品电影| 秋霞精品一区二区三区| 国产精品女主播av| www.久久久久久久久久久| 中文无码久久精品| 国产一区二区高清视频| 国产高清自产拍av在线| 亚洲精品自在久久| 国产第一页在线观看| 国产精品美女久久久久av爽李琼 | 欧美大片免费看| 黑人乱码一区二区三区av| 亚洲成av人在线观看| 女同毛片一区二区三区| 日韩精品一区第一页| 宅男av一区二区三区| 一区二区日韩| 秋霞av国产精品一区| 在线观看免费黄视频| 日韩一区二区三区精品视频| 国产无码精品在线播放| 99re视频这里只有精品| 天堂中文视频在线| 在线中文字幕第一区| 国产精品一国产精品最新章节| 亚洲最大网站| 久久精品国亚洲| 人妻视频一区二区三区| 欧美影院午夜播放| 国产无码精品一区二区| 国产女主播在线一区二区| 一级全黄裸体片| 日韩成人免费在线| 欧美a级免费视频| 欧美精品一二| 国产日韩一区二区三区| 欧美在线一级| 91精品国产色综合久久不卡98口| 日本免费中文字幕在线| 亚洲精品99久久久久中文字幕| 国产九色91回来了| 亚洲国产色一区| 欧美极品jizzhd欧美18| 成人18视频日本| 不卡的在线视频| 久久国产精品毛片| 国产精品va在线观看无码| 欧美综合久久| 久久精品日韩| 日日夜夜精品视频| 国产精品网红直播| 亚洲天堂电影| 久久久女女女女999久久| 日本a级在线| 亚洲毛茸茸少妇高潮呻吟| 亚洲精品中文字幕成人片| 欧美视频中文一区二区三区在线观看| 国产午夜视频在线播放| 亚洲天天做日日做天天谢日日欢 | 亚洲免费观看高清在线观看| a天堂中文字幕| 99久久精品情趣| 四虎国产精品免费| 久久99精品国产.久久久久 | 久久青草免费| 国产97色在线|日韩| 国产在线精彩视频| 欧美丰满老妇厨房牲生活 | 精品国产欧美日韩| 久久99久久99精品蜜柚传媒| 91国内精品| 91九色蝌蚪嫩草| 久久久精品区| 亚洲一区二区三区久久| 日韩亚洲国产免费| 国产女人精品视频| 日本精品裸体写真集在线观看| 欧美在线视频观看免费网站| 狠狠操一区二区三区| 久久久视频精品| 91www在线| 午夜欧美不卡精品aaaaa| 日本无删减在线| 欧美多人乱p欧美4p久久| caoporm免费视频在线| 粗暴蹂躏中文一区二区三区| 黄色av免费在线| 精品国产一区av| 91麻豆一二三四在线| 毛片精品免费在线观看| www视频在线看| 欧美国产日韩在线| 激情网站在线| 高清欧美性猛交xxxx黑人猛交| 999av小视频在线| 欧美一级淫片播放口| 国产精品迅雷| 国产精品久久久久久久久久ktv| 久久xxx视频| 国产精品色视频| 日本99精品| 国新精品乱码一区二区三区18| 欧美韩一区二区| 日韩久久不卡| 亚洲国产一区二区三区在线播放| 乱熟女高潮一区二区在线| 亚洲大胆av| 北条麻妃在线一区| 美国十次了思思久久精品导航| 一级片黄色免费| 99久久精品情趣| 男人的天堂av网| 亚洲黄色在线视频| 成人精品在线看| 欧美日韩免费视频| 亚洲精品久久久久avwww潮水| 亚洲精品久久久久| av在线播放av| 欧美精品第一页在线播放| 日韩激情电影| 国产欧美日韩高清| 国产精品x8x8一区二区| 日韩电影免费观看高清完整| 亚洲精品国产偷自在线观看| 缅甸午夜性猛交xxxx| 日韩不卡在线观看日韩不卡视频| 91亚洲一区二区| 91视频在线观看免费| 国产91在线播放九色| 亚洲成av人片一区二区三区| 亚洲无码精品一区二区三区| 日韩美女视频一区二区在线观看| 男人天堂综合| 久久久午夜视频| 国产欧美自拍| 精品日本一区二区三区在线观看 | 国产欧美日韩视频在线观看| 2021亚洲天堂| 在线观看日产精品| 丰满少妇高潮在线观看| 在线激情影院一区| 女同视频在线观看| 国产一区二区色| 亚洲成aⅴ人片久久青草影院| 成人在线免费高清视频| 奇米在线7777在线精品| 日韩精品人妻中文字幕有码| 综合在线观看色| 无码免费一区二区三区| 精品欧美一区二区久久| 高h视频在线| 91国产美女视频| 日本一区影院| www.午夜色| 日韩经典中文字幕一区| 久久一区二区电影| 玉足女爽爽91| 97人妻一区二区精品免费视频| 亚洲女人初尝黑人巨大| 国产羞羞视频在线播放| 91欧美视频网站| 日本不卡电影| 久草综合在线观看| 99国产精品久久久久久久久久久| 草视频在线观看| 在线播放中文一区| 四虎久久免费| 国产玖玖精品视频| 国产videos久久| 哪个网站能看毛片| 不卡av免费在线观看| 久久久久亚洲av无码专区 | 免费福利在线观看| 91高清免费视频| 美女一区二区在线观看| 国产精品久久国产| 国产乱色国产精品免费视频| 天堂а√在线中文在线鲁大师| 欧美在线free| av在线中文| 国产精品激情自拍| 欧美亚洲国产精品久久| 91最新在线观看| 欧美激情一区二区三区全黄| 久久久久久无码精品大片| 亚洲性xxxx| 国产精品99| 在线成人性视频| 国内精品免费**视频| 99久久99久久精品国产| 91精品国产色综合久久不卡电影| 黄色片免费在线观看| 亚洲xxxx3d| 欧美日韩精品免费观看视频完整| 成人做爰69片免费| 亚洲成人av一区二区三区| 天堂a√中文在线| 国产成人鲁鲁免费视频a| 操欧美老女人| 一级黄色大片儿| 亚洲国产中文字幕在线视频综合| 成人毛片视频免费看| 97成人在线视频| jizzjizz欧美69巨大| 日韩在线不卡一区| 伊人婷婷欧美激情| 五月婷婷深深爱| 国产精品aaaa| 一本一道久久a久久精品蜜桃 | 亚洲一级特黄毛片| 欧美成人午夜激情视频| 国产成人aa在线观看网站站| 无码人妻精品一区二区三区在线| 久久久国产综合精品女国产盗摄| 亚洲天堂国产精品| 久久99热精品这里久久精品| 少妇一区二区三区| 色www免费视频| 亚洲图片自拍偷拍| 国产毛片av在线| 91在线看网站| 视频在线在亚洲| 青青草原在线免费观看| 日韩精品免费综合视频在线播放| av免费在线一区| 日韩a级黄色片| 久久精品夜色噜噜亚洲aⅴ| 国产老女人乱淫免费| 97成人精品视频在线观看| 欧美mv日韩| 少妇特黄一区二区三区| 欧美老女人第四色| 性欧美xxx69hd高清| 中文有码久久| 久久先锋影音av鲁色资源| 国产三级三级在线观看| 日本精品免费观看| 中文字幕一区二区三区乱码图片| 欧美 日本 国产| 日韩三级视频在线观看| 素人一区二区三区|