日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux 跟踪程序执行过程,用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

發(fā)布時(shí)間:2025/3/20 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 跟踪程序执行过程,用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用pvtrace和Graphviz實(shí)現(xiàn)對(duì)linux下C程序的函數(shù)調(diào)用跟蹤

用pvtrace和Graphviz實(shí)現(xiàn)對(duì)linux下C程序的函數(shù)調(diào)用跟蹤

1:功能介紹,使用本方法可以實(shí)現(xiàn)linux下C應(yīng)用程序的調(diào)用跟蹤。對(duì)于了解大型的程序的運(yùn)行過程,和函數(shù)的調(diào)用情況分析很有幫助。

2:用到的開源軟件的安裝

2.1 pvtrace

如果你的linux不支持解壓*.zip最好在windows下解壓后copy到linux下。

解壓后有以下幾個(gè)文件

在linux上安裝pvtrace

需要root權(quán)限

$ make

$ make install

2.2 Graphviz

Graphviz也是一個(gè)開源項(xiàng)目,可以將pvtrace生成的*.dot文件轉(zhuǎn)成圖片格式便于查看。Graphviz的下載地址http://www.graphviz.org/Download..php

有針對(duì)多種操作系統(tǒng)的,我們這里用windows版安裝簡(jiǎn)單且方便使用

安裝后有以下工具:

3:對(duì)要跟蹤工程的修改

3.1我們先用一個(gè)小程序?qū)W習(xí)一下使用過程。

首先:先寫一個(gè)小的test.c

void aa(int i)

{

printf("%d\n",i);

}

int main()

{

printf("hellow

world\n");

aa(10);

printf("test\n");

return;

}

然后將instrument.c考到與test.c相同的目錄

$ lsinstrument.c

test.c

執(zhí)行:

$ gcc -g

-finstrument-functions test.c instrument.c -o test再:$

./test可以看到多了一個(gè)trace.txt$ lsinstrument.c test.ctest trace.txt然后再:$

pvtrace test得到 graph.dot$ lsgraph.dot test trace.txtinstrument.c

test.c將graph.dot拷貝到widows下運(yùn)行g(shù)raphviz的dot模式(我們?cè)?.2安裝的)將它轉(zhuǎn)化成圖像。

輸出的test.jpg

3.2

以capwap的跟蹤為例

我們?cè)谶@里以開源的capwap為例

首先將instrument.c拷貝到capwap所在的目錄

$ ls

……………………………….

instrument.c

……………………………….

$ vim Makefile

其次,在Makefile里添加(紅色字為注釋)

DEBUG = 1

這主要是為了調(diào)試方便,如果不需要跟蹤就把DEBUG指設(shè)成0 可以放在Makefile的第一行。

ifeq ($(DEBUG),1)

CFLAGS += -g

-finstrument-functions

AC_OBJS +=

instrument.o

WTP_OBJS +=

instrument.o

endif

放在 CFLAGS AC_OBJS

WTP_OBJS 定義之后

CFLAGS += -g

-finstrument-functions 是在編譯選項(xiàng)中加入調(diào)試信息。是必須的。

AC_OBJS +=

instrument.o

WTP_OBJS +=

instrument.o

這兩項(xiàng)是將instrument.c

與程序一起編譯了

然后

$ make

$ ./AC

會(huì)生成trace.txt

$ qvtrace AC

會(huì)生成 graph.dot

然后同test一樣,用graphviz轉(zhuǎn)成圖像格式。如下:

總結(jié)

以上是生活随笔為你收集整理的linux 跟踪程序执行过程,用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。