首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序分析工具gprof介绍

最后,用gprof命令查看gmon.out保存信息:        [root@localhost]#gprof test gmon.out –b 这样就有一大堆信息输出到屏幕上,有函数执行单间,函数调用关系等等...l         -p 只输出函数调用(Call graph那部分信息)。 l         -q 只输出函数时间消耗列表。...l         -f Name 输出函数Name 及其子函数调用。可以指定多个 -f 标志。一个 -f 标志只能指定一个函数。...l         -z 显示使用次数为零例程(按照调用计数和累积时间计算)。...不过,gprof不能显示对象之间继承关系,这也是它弱点. gprof 实现原理: gprof并不神奇,在编译和链接程序时候(使用 -pg 编 译和链接选项),gcc 在你应用程序每个函数中都加入了一个名为

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

Valgrind 使用入门

工具简介: Valgrind 是一套类似于 gprof 动态检测工具集,由于使用方便,不需修改目标程序源码,输出清晰图文并茂等优势,常被用作后台(特别是linux后台)服务内存泄漏检测、性能打点、竞态检测等...结果输出,直接 vi memchk.log(由命令中 --log-file 指定)查看: 结果中比较重要是: definitely lost: 确定有内存泄漏,表示在程序退出时,该内存无法回收,...查看结果,运行完后,将输出 callgrind.out.PID 文件,该文件可被 gprof2dot 等工具解析转化为 dot,再由 dot 转化为图片输出,也可以直接用 callgrind_annotate...文件效果: 左边列出了调用parts、调用栈 cost 排序等,右边列出了所有调用者、被调用者以及调用等。...Self表示自身执行耗时,Incl表示包含调用函数总耗时,选择感兴趣函数,在右边可查看该函数调用关系: i.

7.6K00

如何优化服务器性能

它是检查系统进程运行状况最方便工具了,它默认显示部分活动进程,并且按照进程使用CPU多少排序。它可以显示全部CPU使用状况,也可以显示每个进程都运行在那个CPU上面。...id: CPU处在空闲状态时间百分比 4、Strace 可以用来查看一个进程在执行过程中系统调用和所接收信号。 ? 5、tcpdump linux下抓包工具。可以把抓下来信息重定向到文件里。...很强大 6、gprof 程序中每个函数CPU使用时间。 每个函数调用次数。并提供简单调用关系。 ?...使用步骤: 用gcc或g++编译程序时,使用-pg参数 执行编译得到运行程序,会产生一个gmon.out文件 使用gprof命令。查看结果信息。...(gprof -b proc_name gmon.out | less)

1.9K60

如何优化服务器性能

它是检查系统进程运行状况最方便工具了,它默认显示部分活动进程,并且按照进程使用CPU多少排序。它可以显示全部CPU使用状况,也可以显示每个进程都运行在那个CPU上面。...id: CPU处在空闲状态时间百分比 4、Strace 可以用来查看一个进程在执行过程中系统调用和所接收信号。 ? 5、tcpdump linux下抓包工具。可以把抓下来信息重定向到文件里。...很强大 6、gprof 程序中每个函数CPU使用时间。 每个函数调用次数。并提供简单调用关系。 ?...使用步骤: 用gcc或g++编译程序时,使用-pg参数 执行编译得到运行程序,会产生一个gmon.out文件 使用gprof命令。查看结果信息。...(gprof -b proc_name gmon.out | less)

1.7K90

Python脚本分析CPU使用情况

CPython2用法很简单: ? 如果您使用PyPy2: ? 其输出如下: ? 即使使用这个文本输出,很容易看到我们脚本多次调用了list.append方法。...如果我们使用gprof2dot,我们可以以图形方式看到cProfile输出。要使用它,我们必须首先安装graphviz,之后是一些依赖包,最后在Ubuntu上使用如下命令: ?...您可以获得脚本整个输出,并且在每行之前,您可以看到对其进行调用次数,运行时间(秒),每次调用时间和全局时间百分比,pprofile为我们输出添加了额外行(如第44和50行,以(call)开头...vprof(CPython2)/ pypy -m pip install vprof(PyPy),然后调用它: 在CPython2上,显示代码散热(第一个调用如下)和代码分析(下面的第二个调用):...在PyPy上,显示代码散热(第一个调用如下)和代码分析(下面的第二个调用): ? 在每种情况下,您将看到代码散点图以下内容 ? 以及代码分析以下内容。 ?

1.4K50

linux进行c++开发经验总结

一般程序会输出log到磁盘文件,想要实时监控日志文件更新内容,可以使用tail -f filename命令,它会在文件内容有更新时将结果输出到命令窗口 调试 使用gdb调试C++程序 编译时加 -g...n 下一步 c 继续运行,直到程序结束或者遇到断点 s 单步调试 r 重头运行程序 p 打印变量内容 help 查看命令提示 性能分析 gprof工具 linux上分析gcc编译出来程序CPU时间...,找出最耗时函数 使用: gcc -pg 选项编译 运行程序,结束后生成gmon.out gprof ..../prog gmon.out -b 查看输出 原理: 在每个函数中插入count函数,这样函数调用时就会计算次数和时间 缺点: 无法分析多线程程序;无法观察IO时间 valgrind工具 可以使用它Memcheck.../prog_name 运行完会生成callgrind.out.xxx文件 kcachegrind.exe 打开上一步生成文件,可以看到函数运行耗时,以及调用流程 知道哪个函数或者哪个操作最耗时,

1.2K20

IT项目研发过程中利器——CC++项目调用

这个时候我们就可以借助一些工具来生成“调用”(Call Graph)。...静态代码很难100%准确分析出整个项目的调用。 解释器 语法树解释器是静态代码分析关键。我主要关心是两点: 准确性。这个并不好评估,但是可以做些实验得出结论。 继续更新和维护。...它只能分析运行过函数,对于运行没有覆盖函数,不能分析出来。 技术流派 主要就是有哪些性能分析工具: perf。《动态分析C语言代码生成函数调用关系利器——perf》 gprof。...《动态分析C语言代码生成函数调用关系利器——gprof》 valgrind。《动态执行流程分析和性能瓶颈分析利器——valgrindcallgrind》 gperftools。...《动态执行流程分析和性能瓶颈分析利器——gperftoolsCpu Profiler》 它们细微区别是: gprof和gperftools需要在编译时链接分析库代码;而perf和valgrind

13910

Linux下检测内存泄露工具 valgrind

dst和src指针重叠 2.Callgrind 和gprof类似的分析工具,但它对程序运行观察更细致入微,能给我们提供更多信息。...和gprof不同,它不需要在编译源代码时添加附加特殊选项,但加上调试选项是推荐。 Callgrind收集程序运行时一些数据,建立函数调用关系,还可以有选择进行cache模拟。...命令格式如下: valgrind [valgtind-options] your-prog [your-prog options] 比如: -h  显示帮助信息 --version 显示内核版本信息(我也不知道为啥不是...==28308== 中28308表示程序运行时进程号。 Invalid write of size 4:表示非法写入,下面是告诉我们错误发生位置,在main中调用fun函数。...也有一个输出文件,cachegrind.out.25843,可以用cg_annotate 来查看。显示出详细列表。

5.8K100

Linux后台服务常用诊断命令和方法

vmstat 1  每隔一秒输出系统状态,数据来源/pro/stat,输出各列含义 列 含义 procs r,运行队列b,阻塞队列,为block与就绪之和 memory swpd ,虚拟内存已使用大小...sy 系统CPU时间,值太大,较多系统调用,比如I/O操作id  空闲 CPU时间wt 等待IO CPU时间,值太大,说明I/O频繁或者出现瓶颈 vmstat -S M 1 2    输出流量数据单位为...system call调用时间 -o 将strace输出定向到file中。...trace=process 只跟踪有关进程控制系统调用 -e trace=network 跟踪与网络有关所有系统调用 -e strace=signal 跟踪所有与系统信号有关系统调用 -e trace...2、执行应用程序使之生成供gprof 分析数据gmon.out 3、使用gprof 程序分析应用程序生成数据 gprof exec gmon.out > profile.txt 注意: 程序必须通过正常途径退出

1.6K82

NodeJS 性能优化之 CPU 看图篇

#NodeJS如何正确完整采集火焰呢?...,如下表: 颜色 类型 绿色 JS代码调用 蓝色 优化编译代码 黄色 C++/C代码 红色 libuv系统调用 2.3 火焰图形状对应关系 形状 含义 每一个平面方块 一个函数在栈中位置(也称一个栈帧...(AST) c) 针对抽象语法树进行语义分析,构建你需要内部数据结构或生成代码 通过局部查看火焰分析源码 1 Stub:CEntryStub:C入口桩代码,在JSJIT代码中,提供调用Runtime...true>::ParseJsonValue 5【语法分析json-parser.cc】v8::internal::JsonParser::ParseJsonObject 小结:通过火焰我们能够清晰看到函数调用栈...,并能够找到哪些函数是耗时较多 JSON序列化流程相似相似,感兴趣同学可以看一下V8json-stringifier.cc和对应.h文件 三、CPU性能分析另一种可视化dot 3.1 需要gprof2dot

7.5K40

【嵌入式】C语言程序调试和宏使用技巧

一般可以利用配置文件方式显示,其实Linux内核也是这么做,它把调试等级分成了7个不同重要程度级别,只有设定某个级别可以显示,对应调试信息才会打印到终端上。...$ gprof test Flat profile: Each sample counts as 0.01 seconds...,一个是每个函数执行时间占程序总时间百分比,另外一个就是函数被调用次数。...那么是不是每个函数执行绝对时间越长,剖析显示时间就真的越长呢?...工具时候,对于一个函数进行gprof方式剖析,实质上时间是指除去库函数调用和系统调用之外,纯碎应用部分开发实际代码运行时间,也就是说time一项描述时间值不包括库函数printf、系统调用system

63310

linux环境常用性能监控和协助开发调试工具

ps:可查看某个进程占用CPU资源百分比;查看线程信息 ps -eLf top/htop/atop:显示信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定时间来更新显示; top...该命令要求输出所有的线程堆栈信息.对GDB输出结果, 通过管道并借助sed命令进行了替换和过滤。 ltrace:跟踪运行进程函数库调用耗费时间、出错信息、参数传递等。...它采用定期采样方式,统计各函数出现比例。排名较高函数,要么是耗时长被多次统计到,要么是频繁调用被多次统计到,无论哪种情况,这些函数都是消耗系统资源魔头,是优化好对象。...perl top -p pid(可以是线程pid) gprof:可以用来统计程序各函数真实耗时情况,通过它可以精确地了解到各函数耗时,这样哪些函数需要优化,也就不言而喻了。...由可知,idle富余同时,基本无iowait,这说明程序自我阻塞不在IO方面(也从侧面证明了不是swap引起阻塞),那么引起阻塞最大嫌疑就是互斥锁了。 ?

3.7K12

代码优化指南:人生苦短,我用Python

如果我们使用 gprof2dot,我们可以用图形化方式来查看 cProfile 输出。要使用这个工具,我们首先必须安装 graphviz。...让我们仔细看看它输出了什么。你可以看到来自脚本函数调用(callgraph)。...让我们稍微研究一下这个输出。这是这个脚本整个输出,每一行你可以看到调用次数、运行它所用时间(秒)、每次调用时间和占全局时间比例。...: 在 CPython2 上,要显示代码热(下面的第一行调用)和代码分析(下面的第二行调用): vprof -c h 03.primes-v1.py vprof -c p 03.primes-v1.py...在 PyPy 上,要显示代码热(下面的第一行调用)和代码分析(下面的第二行调用): pypy -m vprof -c h 03.primes-v1.py pypy -m vprof -c p 03.

1.1K130
领券