Re: [問題] 請問有什麼軟體可以畫出function flow的?
謝謝推文的建議
我盡量的把每個方法都去試看看
: 推 christianSK: callgrind?
然後後來有用了christianSK所提到的callgrind
再去找有發現Vargrind好像有提供此類的功能
執行下面的指令
$ valgrind --tool=callgrind --dump-instr=yes ./hello.o
再用下面去打開檔案
$ kcachegrind callgrind.out.20547
http://ppt.cc/~MJI
如上圖會有顯示Call Graph
但...我C++檔案例子是印出helloword而已
怎麼會call這麼多東西?
內容也看不太懂 囧
就算換成 a() → b() → c() 這樣呼叫的C++檔案
所顯示的Call Graph還是長得差不多
這好像不是我想要的?
還是這Call Graph裡面的內容該怎麼解讀呢?
另外,
: 推 Killercat: 你想說的是Sequence Diagram吧...
Killercat 所提到的 Sequence Diagram
我去GOOGLE之後發現好像比較接近我要的
請問有什麼軟體或套件可以顯示這個的嗎?
有任何建議歡迎提出
謝謝大家的指教~
謝謝 :)
※ 引述《smilekerker (科科:))》之銘言:
: 標題: [問題] 請問有什麼軟體可以畫出function flow的?
: 時間: Fri Jan 9 08:02:43 2015
:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Linux
:
: 問題(Question):
:
: 請問有什麼軟體可以畫出function flow(名稱我也不太會取,可能是其他種)的?
:
: 程式碼(Code):(請善用置底文網頁, 記得排版)
:
: int a(){
: int x;
: x= b();
: return x;
: }
:
: int b(){
: int x;
: x= c();
: return x;
: }
:
: int c(){
: int x=10;
: return x;
: }
:
: int main(){
: int x;
: x= a();
: return 0;
: }
:
:
: 補充說明(Supplement):
:
: 像是上述程式碼,一層一層呼叫進去再回來
:
: 有無軟體可以將這樣的流程(圖)畫出來呢?
:
: 或是用其他方式呈現之類的
:
: 要google苦無不太知道關鍵字是什麼,找不太到
:
: 謝謝 :)
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.187.212
: ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420761766.A.139.html
: 推 cjcat2266: 有些profiler可以呈現call stack 01/09 08:37
: → cjcat2266: 不知道是不是你要的 01/09 08:37
: → cjcat2266: 也可以在函式的scope裡面自己插入視覺化邏輯 01/09 08:39
: → smilekerker: 請問profiler是...? 可以多提供一點訊息,我試看看~ 01/09 08:42
: → smilekerker: 嗯,因為要看是open source,不是自己寫的,目前還沒 01/09 08:43
: → smilekerker: 有能力自己修改程式碼,只能找tool來幫助看code 01/09 08:43
: → smilekerker: 所以才想說有沒有這類的軟體可以幫忙畫個圖以助釐清 01/09 08:44
: 推 christianSK: callgrind? 01/09 09:15
: → carylorrk: doxygen 或 clang? 01/09 10:57
: 推 LiloHuang: 花錢買個好工具也許是一個方法 http://goo.gl/pygzRr 01/09 11:03
: → LiloHuang: Understand 有提供各種平台的版本,包含 Linux x86/x64 01/09 11:05
: 推 PoorLoser: Edraw Mind Map 免費版的功能已夠用 01/09 11:11
: → carylorrk: 如果有些需要 runtime 才知道的(ex:function pointer) 01/09 11:23
: → carylorrk: 才需要用到 profiler...還可以畫 edge probability XD 01/09 11:24
: 推 carylorrk: 有些 static analyzer 可以算出來,但是特定情況的 01/09 11:28
: → carylorrk: indirect call 還是需要 runtime 跑跑看XD 01/09 11:28
:
: 謝謝各位的建議,
:
: 我剛剛才又不小心發現我之前在看的Souce code(GEM5)官方所提供的"網頁"
:
: 是用doxygen所產生的,網頁下方有一行是這樣說的
:
: http://www.gem5.org/docs/html/index.html
:
:
: 所以,如果我沒有理解錯誤,
:
: 他是將靜態的function怎麼連結與呼叫給產生出來?
:
: 所以無法將程式真的執行動態路徑(呼叫各個function)給描繪出來?
:
: 也就是,舉個例,
:
: 根據上面的程式碼部份再多增加兩個小function d(), e()
:
: x但真的執行的時後不會去叫用到這兩個
:
: int a(){
: int x;
: x= b();
: return x;
: }
:
: int b(){
: int x;
: x= c();
: return x;
: }
:
: int c(){
: int x=10;
: return x;
: }
:
:
: int d(){
: int y;
: y= e();
: return y;
: }
:
: int e(){
: int y=10;
: return y;
: }
:
: int main(){
: int x;
: x= a(); // 只有叫用到a() b() c()三個
: return 0;
: }
:
: 那看網頁上的介紹是會把"兩串"都畫出來
:
: 但事實上我只要看真的有跑的那些就好的話呢?
:
: 煩請指點!!!
:
: 謝謝 :)
:
:
:
: ※ 編輯: smilekerker (140.116.187.212), 01/09/2015 16:08:25
: 推 Killercat: 你想說的是Sequence Diagram吧.... 01/09 17:44
: → Killercat: 某些付費軟體如Enterprise Architect有從runtime parse 01/09 18:05
: → Killercat: 出sequence diagram(逆向工程)的方法 不過已C/C++來講 01/09 18:05
: → Killercat: 這應該都不會是免費的... Java比較有機會找到免費的 01/09 18:05
: → carylorrk: perf 我記得也可以畫出(文字版的)call graph... 01/09 18:19
: → Killercat: 自畫的話一堆免費軟體都能做到倒是真的... XD 01/09 18:29
: → Killercat: 要逆向工程runtime幫你分析畫出來的話就比較..... 01/09 18:29
: 推 tubbysong: Source Insight 01/09 18:36
: → carylorrk: perf 的 call graph 是 runtime 的 call stack 啊XD 01/09 18:36
: → tubbysong: Source Insight 菜吧看碼神器 01/09 18:37
: → carylorrk: 而且至少樹狀圖看起來還 OK 啦~ 01/09 18:37
: 推 michael0728n: Astah? 不過讓它幫畫好像要錢 01/09 18:57
: → michael0728n: Source Insight可以畫圖嗎?! 01/09 18:57
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.187.212
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1420966344.A.EC4.html
→
01/11 18:21, , 1F
01/11 18:21, 1F
→
01/12 07:34, , 2F
01/12 07:34, 2F
→
01/13 14:26, , 3F
01/13 14:26, 3F
→
01/13 14:26, , 4F
01/13 14:26, 4F
→
01/13 14:29, , 5F
01/13 14:29, 5F
推
01/13 14:38, , 6F
01/13 14:38, 6F
→
01/13 14:39, , 7F
01/13 14:39, 7F
→
01/13 14:40, , 8F
01/13 14:40, 8F
推
01/13 14:43, , 9F
01/13 14:43, 9F
→
01/13 14:45, , 10F
01/13 14:45, 10F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):