網路城邦
上一篇 回創作列表 下一篇   字體:
追蹤原始碼的工具
2007/02/01 01:10:50瀏覽4792|回應1|推薦9
Source Insight

Source Navigator
lxr.
原來是用在 Linux 的 Source Code Tracing, 不過用在大型的系統上面也很好用, 網址在 http://lxr.linux.no/



grep
這個工具來協助我追蹤原始碼中的識別字(變數名稱、函式名稱、類別名稱)提供了regular expression的比對。Windows上使用的是grep32 

 ctags的工具。這個工具不單只是文字層次的搜尋,由於它本身就具備了各種程式語言的parser,所以可以在語法層次上進行處理。ctags這個工具,它會對指定的原始碼進行索引的動作,而且只會處理被視為language object的東西,日後的檢索,皆至索引中進行搜尋,因此效率也會更好。對C/C++來說,它可以處理的tag類型包括:class names, macro definitions, function definitions, class, interface, struct, and union data members,... 等等。

除此之外,它也整合了各種編輯器(vi, vim, UltraEdit…),還支援了33種程式語言。

gtagsGNU GLOBAL source code tag system)的工具,覺得值得推薦。gtags的基本精神和ctags相像,但是不同的是,它和編輯器本身是獨立的。

安裝完後,即可執行它所附的gtags.exe,即會針對指定的目錄進行索引建立的動作。動作完成後,相關的索引檔案即會產生(包括:GPATH, GRTAGS, GSYMS, GTAGS)。再利用global.exe即可進行相關的搜尋,例如搜尋ffmpeg專案中定義AVStream的檔案,可以輸入global –x AVStream

其輸出即為

AVStream 271 libavformat/avformat.h } AVStream;

如果我們想要知道所有引用AVStream的檔案,就只要輸入global –xg AVStream

就會得到以下之類的結果。


AVStream 53 ffmpeg.c typedef struct AVStreamMap {


AVStream 58 ffmpeg.c } AVStreamMap;


AVStream 81 ffmpeg.c static AVStreamMap stream_maps[MAX_FILES];


AVStream 261 ffmpeg.c  AVStream *st; /* stream in t


he output file */


這麼一來,尋找起來真是方便多了。

此外,它提供的htags更是一大福音。因為它可以幫你把整個索引的內容,製作成HTML的形式。包括幫你找出所有程式的入口點(很多專案裡,有main()的檔案不少)、所有定義,並且為你整理出所有的原始碼檔案。憑藉著HTML超連結的特性,閱讀追蹤起來十分容易,就這一點來說,就像是另一個原始碼的分析工具-doxygen一樣。當我們在檢視AVStream的定義時,看到了AVStream含有AVRational的欄位,只要再沿著AVRationallink前進,即可進到AVRational的定義位置,這相當符合追蹤原始碼時的許多行為。我個人強力推薦大家使用。

( 休閒生活旅人手札 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=keithmin&aid=704977

 回應文章


等級:
留言加入好友
@0@!
2007/02/01 23:00

哇賽""真是深奧...希望 看尬霧颯颯ㄟ...哀...外行就是外行...

可!希望 是立志要開發"第二生命"ㄟ瑯+ 還請以後多指教嚕~!!