C语言调试和分析工具

gprof

gprof 是 GNU Profiler 的简称,是一个用于性能分析的工具,主要用于分析 C、C++ 以及其他支持的编程语言编写的程序。它的主要功能是帮助开发者找出程序的性能瓶颈,从而优化代码。gprof 的工作原理是通过插入代码段来记录程序的运行时间和调用关系,然后生成性能分析报告。

在Makefile中添加-pg

使用gprof之前,要先在Makefile的编译器中添加-pg,可以在icc后面添加,也可以在CCFLAGS后面添加
编译器中添加-pg

使用gprof分析

(1)在终端直接输入gprof ./main,可以在终端直接看到gprof的分析结果
(2)在执行gprof ./main命令之后,项目文件会生成gmon.out文件,可以将gmon.out中的分析结果存储在txt文件中。因此可以在终端直接输入命令gprof ./main gmon.out > analysis.txt。执行完命令之后,项目文件中会出现analysis.txt文件,文件中包含gprof的分析结果。之后可以输入命令cat analysis.txt直接查看结果。
使用gprof的命令
gprof的分析结果

gprof的分析结果

valgrind

Valgrind 是一个用于内存调试、内存泄漏检测和性能分析的工具框架。它主要用于 C 和 C++ 程序,但也支持其他使用类似内存管理模型的编程语言。Valgrind 提供了一组工具,可以帮助开发者检测程序中的内存错误、内存泄漏、并发错误等问题,从而提高程序的稳定性和性能。

memcheck

这是 Valgrind 最常用的工具,用于检测内存错误,如非法读取和写入、使用未初始化的内存、内存泄漏等
首先要在makefile中添加关于memcheck的命令
makefile中添加memcheck命令
之后直接输入make memcheck命令,执行命令,终端便会显示内存的检测结果

callgrind和Cachegrind

Callgrind:用于分析程序的调用图和性能瓶颈,Cachegrind:用于分析程序的缓存使用情况和性能。
输入命令valgrind --tool=callgrind ./main
callgrind命令
执行命令后,项目中会生成callgrind.out.xxx文件
生成callgrind文件
用kcachegrind可以可视化函数调用结果,输入命令kcachegrind callgrind.out.xxx
kcachegrind命令
kcachegrind可视化结果
kcachegrind可视化结果
输入命令callgrind_annotate callgrind.out.xxx,可以查看文件分析结果
callgrind命令
分析结果

gdb

GDB(GNU Debugger)是 GNU 项目的一部分,是一个功能强大的调试器,主要用于调试 C、C++ 和其他支持的编程语言编写的程序。GDB 允许程序员在程序运行时进行调试,包括设置断点、单步执行代码、检查变量和内存等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值