Windows平台下源碼分析工具

來源:互聯網
上載者:User

標籤:現在   height   graphviz   idt   有關   吐槽   div   bsp   解決方案   

    最近這段時間在閱讀 RTKLIB的原始碼,目前是將 pntpos.c檔案的部分看完了,準備寫一份文檔記錄下這些代碼的用處、處理過程、理論公式來源、注意事項,自己還沒有弄明白的地方。目前的想法是把每一個函數都做成一個名片,這個名片內則包含代碼的功能說明、參數說明、函數呼叫歷程圖、整體處理過程、注意事項和自己的疑惑這幾個部分。而在這個名片內出現的其他函數(包括在文字和呼叫歷程圖中出現的)則使用超連結連結到其他函數名片內。然而我並不想自己去手工繪製函數呼叫歷程圖,於是就百度了一下,這才發現關於介面文檔、說明文檔、函數呼叫歷程圖這些輔助開發文檔早就有人做了專門的軟體來高效、有組織地來解決這些問題了。

    關於函數呼叫歷程圖,在 Linux和 Windows平台下也都有不同的解決方案,搜尋一下就能找到很多與之相關的技術文檔。目前我是只使用 Windows,這裡著重說一下 Windows裡中合適的解決方案。

  1. 直接使用 VS內建的關係圖功能產生呼叫歷程圖。對於 windows平台下經常使用 VS來開發的人來說,這毫無疑問是最簡單的方法。不過我並沒有用這種方法,一來我看了一下,感覺產生的程式碼圖不夠直觀,有些函數會被摺疊;二來目前我並不打算使用 VS來編譯 RTKLIB源碼,我現在一直是用 NotePad++來編輯、閱讀源碼的。

  2. source insight,好是好,可是在別人的部落格中看到,說在SI產生的呼叫歷程圖中,當兩個函數調用同一個底層函數時,該底層函數會分別出現在兩個函數調用圖的下面,因此這種方法也不能最快的看出那些經常被調用的底層函數,感覺同一幅圖中,同一個函數多次出現,看起來就很冗餘,也不好。

  3.Doxygen+GraphViz+HtmlHelp,這也是我寫這篇部落格所想要介紹的。詳細內容見 《Windows平台下Doxygen+GraphViz+HtmlHelp自動產生函數呼叫歷程圖》(本來想直接轉載該篇部落格的,但又懶得去聯絡其作者,遂置一連結於此),下面主要寫幾個我再按照這篇部落格操作時遇到的問題。

    1. 給出的Graphviz的下載目錄不可用,如1所示。這個問題不難,自己去官網下載 windows版本的就行。這裡我下載的版本2所示,要注意的是這個不是安裝包,直接就可以用,所以某些情況下需要自己設定環境變數。而對於本次和 Doxygen聯用,則不需要,因為在建立 Doxygen工程時,需要指定 Graphviz的所在目錄。

圖 1

圖 2

    2. 產生的調用圖中有時候會包含太多底層函數,使整個圖反而變得看上去很亂,如3所示。這可以在 Doxygen中進行設定,與之有關的參數有兩個,DOT_GRAPH_MAX_NODES和 MAX_DOT_GRAPH_DEPTH,分別控製圖中的最大節點數和節點深度,如 4所示。節點深度預設為 0,即不進行深度控制,使用者可自行設定。只是需要注意,深度也不宜太小。比如對於圖 5中的調用關係,當設定深度為 1時,C就不會顯示出來。

圖 3 MAX_DOT_GRAPH_DEPTH=0時的函數調用圖

圖 4 

圖 5

    我也是今天才發現這個神奇的東西,所關於源碼分析工具也就先說到這裡。前段時間在打算開始閱讀 RTKLIB源碼時就在想,閱讀開原始碼有沒有什麼“黑科技”,當時出於懶惰沒有去尋找相關的資料,現在吃了苦頭才發現,只能說“技術上可以偷懶,想法上不能偷懶”。做事情都有前人的經驗和技巧,善用此道,才能真正偷得到懶。

    (最後,我還是要吐槽一下部落格園的編輯介面和顯示介面,橫向上太寬了,真的不如 cmd Markdown寫起來方便、美觀)

 

Windows平台下源碼分析工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.