1. 程式人生 > >cygwin環境下gprof+gprof2dot+dot生成函式關係結構圖

cygwin環境下gprof+gprof2dot+dot生成函式關係結構圖

     在linux環境下利用gcc/g++編譯連結程式碼的時候,加入-pg選項,在執行檔案後就會生成gmon.out,gmon.out記錄了函式在cpu執行的時間和被哪些函式呼叫的次數,關於gprof的使用和原理說明可以引數這兩篇文章《linux下的程式分析工具——gprof 》、《Linux效能評測工具之一:gprof篇》。步驟如下:

      1.gcc -Wall -pg test.c -o test

      2../test.exe (由於我是在windows環境下用cygwin的,所以生成有exe字尾)

      3.gprof -b ./test.exe >report.txt

     生成的flat profile和call graph如圖1。

 

圖1

        從圖1中可以看出gprof生成的都是文字描述,我們可以利用gprof2dot.py指令碼把資料轉化成dot格式,再利用dot生成一張函式關係圖。

        cygwin配置環境要求下:

        1.安裝python。

        2.gprof2dot.py(網上有得下載),下載後放在/bin/目錄就可以了。

        3.安裝graphviz,直接搜尋graphviz,如圖2,然後安裝。

圖2

       gprof2dot預設是部分函式呼叫圖,如果要顯示全部的函式呼叫關係,可以用gprof2dot -n0 -e0。預設的設定可以直接引數gprof2dot.py,截圖如圖3。

圖3

       安裝好之後,執行如下命令:

       gprof -b ./test.exe|gprof2dot.py |dot -Tpng -o test.png或者

       python /bin/gprof2dot.py report.txt | dot -Tpng -o test.png

       這就生成了一張函式關係圖了,如圖4。

    

圖4

        以上都是今天下午的學習成果,總結了網上一些文章所說的和自己動手實踐成果。但是我一點都不懂graphviz和dot,這是值得我拓展的地方!

相關推薦

cygwin環境gprof+gprof2dot+dot生成函式關係構圖

     在linux環境下利用gcc/g++編譯連結程式碼的時候,加入-pg選項,在執行檔案後就會生成gmon.out,gmon.out記錄了函式在cpu執行的時間和被哪些函式呼叫的次數,關於gpr

JetBrains Rider 在 Mac 環境將 cs 檔案生成 exe

  因為自己的開發環境是 Mac + Rider 組合,想測試網路程式設計相關內容。想在Windows 虛擬機器上執行一套程式碼來與Mac 機進行測試,但又不想在虛擬機器上安裝一套開發環境。最終找到的解決方案是通過 csc 命令將需要測試的程式碼 exe 可執行程式,然後再複製到 Windows 虛擬機器上執

Linux環境靜態庫的生成和使用 (.a檔案)

        這一陣子的工作用到了linux,也用到了linux的靜態庫和動態庫。正好對這一塊兒一直不明白,趁此機會學習了一下。以下是筆記。先說一說linux下靜態庫的生成和使用方法。 &nb

Cygwin環境使用Android NDK r8e編譯boost 1.53

這裡不能不說Google確實搜了1天都沒解決問題, baidu第一個就解決了... cygwin參考這裡 簡單的說 1.下載cygwin的網路安裝包(第一次安裝只能這樣) 2. 選擇靠前一點的網站進行下載( 下好的包可以留著, 下次安裝直接從資料夾中選擇就可以安裝) cygwin下使用NDK編譯boo

ubuntu中eclipse環境import cv2後opencv函式呼叫失敗問題解決辦法

當前opencv的安裝已經非常方便,特別是python版本。主要是pip已經提供了opencv-python的包,直接可以免編譯實現對opencv的安裝。 如https://pypi.python.org/pypi/opencv-python網頁中提供了多個連結的下載安裝

Cygwin環境NFS伺服器的安裝

執行Cygwin後,拷貝要安裝的NFS伺服器安裝包(在cygwin-install中)到cygwin/tmp目錄下 (1)解壓安裝包   cd /      一定要回到根目錄下解壓安裝NFS伺服器   tar xvjf nfs-server-2.3-5.tar.bz2 

VS工具使用——程式碼生成函式關係

小引:         在上篇文章《VS工具使用——程式碼圖》中,我向大家介紹了我對工具“程式碼圖”的發現和認識。真是感覺當自己的眼睛不再被矇蔽的時候,會發現整個世界的美好。所以,這次要向大家介紹我對

linux環境 C++效能測試工具 gprofgprof2dot

1 簡介 改進應用程式的效能是一項非常耗時耗力的工作,但是究竟程式中是哪些函式消耗掉了大部分執行時間,這通常都不是非常明顯的。GNU 編譯器工具包所提供了一種剖析工具 GNU profiler(gprof)。gprof 可以為 Linux平臺上的程式精確分析效能瓶頸。gprof精確地給出函式被呼叫

編譯器可以生成相同的環境運行的目標代碼

計算 nbsp ++ 轉換 編譯器 amp all public tab 編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平臺)相同的環境下運行的目標代碼 ,這種編譯器又叫做“本地”編譯器。 另外,編譯器也可以生成用來在其它平臺上運行的目標代碼,這種編譯器又叫做交

Centos環境,執行gulp,顯示執行成功,但找到不生成的壓縮文件

cat 大寫 div pip 沒有 span 找到 code root 舉例來說:以下是css文件夾下site.css文件為site.min.css,並且將生成的文件放在指定的目錄下 //壓縮站點css gulp.task(‘appallcss‘, funct

iOS Debug環境生成dSYM檔案配置

Build Setting Debug Information Format -> DWARF with dSYM File Generate Debug Symbols -> YES 在 Products 資料夾內 Show In Finder

在Windows環境使用gcc生成可執行程式簡介

gcc(GNU編譯器套件)。gcc的初衷是為GNU作業系統專門編寫的一款編譯器,可以處理多種程式語言:C、C++、Objective-c 、Objective-c++、Fortran、 Java 、Ada 、Go及組合語言。 基本用法: 在使用gcc編譯器時,我們必須給出一系列必要的呼叫引數

vs環境C++dll生成和使用(基礎篇)

動態庫和靜態庫: 動態庫:全名動態連結庫,用於將你的函式封裝,讓別人只能呼叫,不能看你的實現程式碼。由引入庫和dll組成:引入庫包含匯出的函式和變數名,dll包含實際的函式和資料,執行時載入訪問dll檔案。  Windows API中的所有函式都封裝在dll裡面,最重要的三個:

關於Linux環境應用生成圖片中出現亂碼的問題處理

緣由:測試環境和生產環境系統字符集都是LANG=en_US.utf8,程式在測試環境通過下述方式生成的圖片裡面的中文可以正常顯示,生產環境不行,排查原因為生產環境確認對應的字型,採取後續方法增加字型。 1、C:\Windows\Fonts下找到字型檔案simsun.ttc,重新命名為sim

【順序表】純C環境函式傳遞的指標指向報錯及解決

之前開始學順序表的時候,就沒有很好地弄懂,函式裡指標的傳遞這一塊,今天把錯誤範例和一些解決方式拿出來分析一下。 網上有很多掛羊頭賣狗肉的c語言教程,函式是引用呼叫的,就很誤導人。 Wrong: typedef struct { int *elem; in

window環境利用MFC生成二維碼並顯示在對話方塊上

要達成如題的目的,首先要對以下知識做一些瞭解: 1.MFC建立對話方塊工程以及在對話方塊下的空間操作。 2.MFC載入圖片以及顯示圖片。 3.二維碼的相關知識。 首先,瞭解bmp圖片格式。 BMP格式介紹 BITMAP結構體引數介紹 然後,瞭解什麼是二維碼以及實現過程。 二維碼介

mac環境 HSDIS JIT生成反彙編程式碼

1、下載反彙編外掛  2、指定外掛的位置 hsdis-amd64.dylib放在$JAVA_PATH/jre/lib/server/中,與libjvm.dylib同目錄 3、設定JAVA_HOME 因為本機安裝了zulu,預設的jvm為openJDK,貌似

生成環境的Tomcat 8.0.36 在CentOS7安裝和配置apr

# cd /usr/local/src # wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz # tar -xzvf apr-1.5.

關於如何在linux環境生成a庫和so庫(改,附圖)

一般linux環境下的連結庫分為a庫和so庫,分別表示靜態連結庫和動態連結庫,其作用是把C程式編譯好做成一種可執行連結檔案,c主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要i

windows環境cygwin ssh實現linux到windows的無密碼登陸

在寫本文前,已經參閱N多的相關資料,在ssh安裝過程中並不是一路yes或有的yes,而是在讀懂安裝過程中的提示最重要,現將自己成功實驗過程分享。 ps:最好的資料就是按照cygwin  ssh-host-config安裝提示進行。 1.安裝cygwin,並安裝openssl