教你如何剖析源碼

1、源碼閱讀需求

  在學習中,咱們會須要了解,學習,使用一個框架,一個新的函數庫。在工做中,由於業務需求,由於性能問題,可能經過一個更高性能的工具,架構去優化咱們的程序。html

那麼,問題就來了。網站下載了源碼,目錄一層一層,頭文件無數,打開以後又是一個函數上百行代碼,一個類可能有近千行代碼。看着都崩潰了,只想關機去靜靜。linux

那麼,如今。就談談如何閱讀源碼的問題了。vim

2、源碼閱讀方法

  認知過程:windows

  ①瞭解庫/框架的功能-->具體作法:找到相關文檔或者書籍,獲取庫/框架的功能簡介。知道他是幹什麼的。(相關知識儲備足夠了,那麼學習這個框架就會事半功倍的)架構

  ②認識庫,可以簡單使用庫-->具體作法:經過官方文檔或者工具,獲取框架的外部接口,嘗試在程序中使用它。這個過程能夠是個深度優先、廣度優先方式。看我的學習瞭解方式和能力了(ps:a.接收能力強,那麼你能夠嘗試將大體的功能都嘗試調用,全局體驗,瞭解整個庫/框架的使用,做用,然後深刻剖析。框架

        b.若是你是個能夠作到深刻,能鑽進去的人,那麼你就經過深度優先方式,逐個模塊的深刻學習。而後慢慢的熟悉整個框架)函數

  ③閱讀源碼,瞭解整個框架/抽離核心,實現簡潔版-->這個過程可能對不一樣的人就有差距了,深刻理解的,那麼就可能作到抽離框架核心,實現簡潔版,獲取框架思想,而且作到框架功能優化,提交bug等。而通常點,那就是熟悉框架結構,瞭解功能接口,在學習工做中使用。固然,這樣也許在程序中出現某些bug時,就不能準肯定位錯誤並改進了。工具

  ④第三個過程實際上是一個漫長的過程,還要可以保持足夠的耐心動力去探索。能夠具體劃分爲:性能

    a.根據目錄層次,將整個框架進行模塊劃分認知,瞭解模塊間耦合關係。學習

    b.進入目錄,學習一個模塊的實現細節,這時。能夠選擇,拷貝一份源碼,閱讀同時加入註釋。

    c.遇到類間關係複雜的地方,能夠經過UML類圖視覺體現關係,然後詳細學習。

boss 級方案

  利用UML工具,將源碼生成對應UML圖,瞭解類接口,成員函數以及類間關係。而後深刻源碼(ps這個太強大,通常人駕馭不了)

  固然,vs調試過程也會有這個功能。http://jingyan.baidu.com/article/7f41ecec15092c593d095c17.html

3、工具推薦

  windows環境 源碼剖析工具:vs20XX (源程序閱讀,測試程序運行調試),everything(目錄文件搜索),source insight(源文檔閱讀,支持函數跳轉,體現調用樹,關聯性等)

  linux環境 工具推薦:vim + ctags + taglist  

4、工具簡單使用教程

  ①vs

http://blog.csdn.net/anzhongliu/article/details/48750637

http://feiger.cn/?p=4118

②everything

  這就是個簡單的目錄搜索工具,能夠找到任何你有的東西哦。---保證讓你沒有小祕密可言。

③source Insight

  這個就是咱們今天介紹的重點了

a.工具簡介:sourceinsight,英文解讀「深刻到源代碼」該軟件只具備代碼的閱讀,編輯,簡單語法檢查功能,而不具備編譯功能。可是在閱讀大規模工程代碼時,sourceinsight在代碼導航,高亮註釋,顏色區分,代碼關聯等方面對於源碼閱讀都有 很好地幫助。

b.工具獲取http://www.sourceinsight.com/

c.基本使用

源碼導入/新建工程

project-->newProject(alt+shift+n)

添加項目文件:也就是你須要查看的源碼,在文件系統中找到須要添加的項目文件夾,而後點擊add All便可

彈窗提示是否遞歸添加子文件夾,選中,肯定

至此,工程創建完成,那麼。下面就看看具體如何使用軟件進行源碼閱讀了

比較經常使用的視圖,設置出來

 

對於比較長的文件,那麼若是順序讀源文件確定不方便了。這時,你應該發現左邊的的選項框了。

且文件瀏覽中,支持快速定位,跳轉等功能,這個窗口能夠看到具體的類,函數調用關係,引用,使用位置等。

快捷方式:

Source Insight經常使用的快捷鍵: 
    Ctrl+= :Jump to definition 
    Alt+/ :Look up reference 
    F3 : search backward 
    F4 : search forward 
    F5: go to Line 
    F7 :Look up symbols 
    F8 :Look up local symbols 
    F9 :Ident left 
    F10 :Ident right 
    Alt+, :Jump backword 
    Alt+. : Jump forward 
    Shift+F3 : search the word under cusor backward 
    Shift+F4 : search the word under cusor forward 
    F12 : incremental search 
    Shift+Ctrl+f: search in project 
    shift+F8 : hilight word 
Source Insight的窗口操做: 
    project window Ctrl+O打開 
    symbol window Alt+F8打開和關閉 
    Contex Window 自定義鍵打開和關閉 
    Relation Window 自定義鍵打開 先鎖定再刷新聯繫

 

最後,關於sourceinsight的使用,參考

http://www.cnblogs.com/olvo/archive/2012/05/04/2483424.html

http://blog.csdn.net/lyl_98/article/details/889706

有任何疑問或者改正之處,歡迎交流。

相關文章
相關標籤/搜索