
Valgrind+GDB
文章平均质量分 79
全面详细介绍linux下内存泄漏等调试工具Valgrind及GDB
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
艺高机器人编程
没有人不爱惜他的生命,但很少有人珍视他的时间!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Linux】微基准测试
微基准测试概念、工具(Google Benchmark)、用法详解原创 2024-07-18 18:31:18 · 238 阅读 · 0 评论 -
【Linux】性能分析器 perf 详解(四):trace
perf性能分析器之trace原创 2024-07-03 19:00:00 · 542 阅读 · 0 评论 -
【Linux】性能分析器 perf 详解(三):kmem、mem
kmem 用于跟踪/测量内核内存属性的工具,如分配、释放、碎片率等。可以帮助开发者和系统管理员理解内核内存的分配和释放模式,从而诊断内存泄漏、过度分配等问题。跟踪内存分配和释放:监控内核函数如 kmalloc, kfree, vmalloc, vfree 等的调用。统计内存使用:统计不同内核内存缓冲区的使用情况,如 SLAB 缓存中的对象。分析内存泄漏:通过长时间跟踪内存分配和释放,帮助发现未释放的内存分配原创 2024-06-27 20:19:32 · 554 阅读 · 0 评论 -
【Linux】性能分析器 perf 详解(二):list、record、report、top
perf record:执行后会在当前工作目录下生成一个名为 perf.data 的二进制文件,其中包含了所有收集到的性能数据。perf report :当完成数据收集后,可以使用 perf report 命令来分析和展示这些数据。perf top 类似Linux的top命令,可以实时显示系统中占用CPU时间最多的函数运行命令:sudo perf top。原创 2024-06-26 19:51:15 · 837 阅读 · 0 评论 -
【Linux】性能分析器 perf 详解(一):简介、安装、stat命令演示
perf 是由 Linux 官方提供的系统性能分析工具。内核子系统 perf_events 提供了性能计数器(hardware performance counters)和性能事件的支持,它以事件驱动型的方式工作,通过收集特定事件(如 CPU 时钟周期,缓存未命中等)来跟踪和分析系统性能。perf 命令是一个用户空间工具,具备 profiling、tracing 和脚本编写等多种功能,是内核子系统 perf_events 的前端工具。原创 2024-06-25 20:40:11 · 479 阅读 · 0 评论 -
【Linux】性能分析器 gperftools 详解
google分析工具gperftools:编译、安装、使用详解原创 2024-06-25 22:37:40 · 779 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十六):交叉编译、移植到arm(失败)
官网:https://valgrind.org/源码:https://valgrind.org/downloads/current.html。原创 2024-06-19 19:00:00 · 607 阅读 · 0 评论 -
【linux】使用g++调试内存泄露:AddressSanitizer
AddressSanitizer(又名 ASan)是 C/C++ 的内存错误检测器。它可以用来检测: 释放后使用(悬空指针) 堆缓冲区溢出 堆栈缓冲区溢出 全局缓冲区溢出 在作用域之后使用 初始化顺序错误 内存泄漏原创 2024-02-21 20:22:42 · 456 阅读 · 0 评论 -
【Qt】Qt单元测试详解(五):Google Test 参数(测试数据集)
QTest中有数据集的概念,Google Test也有类似数据集的功能,称为参数化(parameterized)。原创 2023-04-03 19:00:00 · 598 阅读 · 0 评论 -
【linux】coredump、gdb调试崩溃的程序
当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(core文件),这种行为就叫做 Core Dump 或者叫做 ‘核心转储’,利用 coredump 可以帮助我们快速定位程序崩溃位置。coredump和Valgrind的区别。原创 2023-03-24 18:44:17 · 1403 阅读 · 0 评论 -
【Linux】ubuntu18.04安装crash
crash的安装使用详解原创 2023-03-23 20:22:36 · 973 阅读 · 0 评论 -
【Qt】QTest:编译Qt单元测试程序
一、使用方法1、测试程序源码TestQString.proQT += testlibQT -= guiTARGET = tst_TestQStringTestCONFIG += consoleCONFIG -= app_bundleTEMPLATE = appSOURCES += tst_TestQStringTest.cppDEFINES +=...原创 2018-11-21 19:09:29 · 6221 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十三):DRD(线程错误检测器)
用于检测多线程C和C ++程序中的错误原创 2018-11-16 13:20:53 · 1139 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十五):Callgrind(性能分析图)
一、概述1、CallgrindCallgrind用于记录程序中函数之间的调用历史信息,对程序性能分析。默认情况下,收集的数据包括执行的指令数,它们与源码行的关系,函数之间的调用者、被调用者关系以及此类调用的数量。可选项是,对高速缓存模拟和分支预测(类似于Cachegrind)。2、callgrind_annotate、callgrind_control在程序终止时将配置文件数据写出到文件。...原创 2018-11-20 17:34:43 · 10937 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十四):Cachegrind(缓存和分支预测分析器)
一、概述Cachegrind模拟程序与CPU的缓存层次结构和分支预测器(可选)的交互方式。它模拟具有独立的第一级指令和数据缓存(I1和D1)的CPU,支持二级缓存(L2)。这与许多CPU的配置完全匹配。但是,一些新的CPU具有三级或四级缓存。对于这种情况,Cachegrind会模拟第一级L1和最后一级缓存。原因是L1高速缓存通常具有低关联性、最后一级缓存对程序运行时影响最大,因此模拟它们可以检...原创 2018-11-20 17:34:22 · 4915 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十二):DHAT:动态堆分析器
一、概述DHAT动态堆分析器。Massif(堆分析器)是在程序结束后输出分析结果,而DHAT是实时输出结果,所以叫做动态堆分析器。Massif只记录堆内存的申请和释放,DHAT还会分析堆空间的使用率、使用周期等信息。DHAT的功能:它首先记录在堆上分配的块,通过分析每次内存访问时所指定的块判断是否是之前已经记录过的块,并收集统计这些信息,最终输入如下结果:总共分配的堆内存数(字节数和块数)...原创 2018-11-08 18:07:54 · 1354 阅读 · 0 评论 -
【GDB】gdbserver的使用,远程调试开发板
0、将gdbserver拷贝到目标板子上注:gdbserver在交叉编译工具目录/debug-root/usr/bin下可用file命令查看------------------------------------------------------------$ file gdbserver gdbserver: ELF 32-bit LSB executable, ARM原创 2018-01-04 15:03:59 · 1171 阅读 · 0 评论 -
【linux】Valgrind工具集详解(一):简介
一、Valgrind概述Valgrind是用于构建动态分析工具的仪器框架。它附带了一组工具,每个工具都执行某种调试,分析或类似任务,可帮助您改进程序。Valgrind的架构采用模块化设计,因此可以轻松创建新工具,而不会干扰现有结构。二、工具集列表1、Memcheck是一个内存错误检测器。它可以帮助您使程序,尤其是那些用C和C ++编写的程序更加正确。2、Cachegrind是缓存和分支预测...原创 2018-10-30 18:13:22 · 1652 阅读 · 0 评论 -
【linux】Valgrind工具集详解(二):入门
一、使用valgrind1、安装安装超级简单:sudo apt-get install valgrind2、使用运行valgrind -h可以查看详细使用方法,命令格式如下:valgrind [valgrind -h中的选项] 待测程序 [待测程序的命令行参数列表]最重要的选项是–tool决定运行哪种Valgrind工具。例如,使用内存检查工具Memcheck 运行“ls -l”...原创 2018-10-30 18:38:12 · 1178 阅读 · 0 评论 -
【linux】Valgrind工具集详解(三):打印信息说明
一、打印信息格式Valgrind打印信息的格式如下,很容易和程序输出信息区分出来== 进程ID ==Valgrind的打印信息二、打印到何处1、打印到文件描述符中主要是设置打印到终端上,默认情况下为2(stderr标准错误输出)。如果要想打印到其他文件描述符(例如编号9),则可以指定 --log-fd=9。2、打印到指定文件中使用选项:–log-file=filename若fil...原创 2018-10-30 19:36:39 · 2547 阅读 · 0 评论 -
【linux】Valgrind工具集详解(四):抑制错误
一、什么是抑制错误错误检查工具可以检测系统库中的许多问题,例如C库,它是随操作系统预安装的。这些错误无法修复,并且有很多,但不希望看到这些错误。如何屏蔽这样错误就叫做“抑制错误”。二、添加需要抑制错误的列表...原创 2018-10-30 20:03:35 · 1967 阅读 · 0 评论 -
【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法
一、值的有效性1、什么是值的有效性?英文原文是Valid-value (V) bits,直译过来就是有效值(V)位。我将它理解为值的有效性,就是判断在内存或CPU的物理地址中存储的数据是否有效,比如在内存中变量(int i)代表的物理位置(不是地址),没有初始化,就去使用它,是否合法,参见下面的判断。2、当仅仅是复制未初始化的值,并且不使用它时,Memcheck不会报告错误,认为是有效的。...原创 2018-11-06 11:22:13 · 743 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)
一、概述SGCheck是一种用于检查栈中和全局数组溢出的工具。它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察。栈中的数据:例如函数内声明数组int a[10],而不是malloc分配的,malloc分配的内存是在堆中。SGCheck和Memcheck是互补的:它们的功能不重叠。Memcheck对堆数组(如malloc分配的内存)执行边界检查和使用后检查。它...原创 2018-11-06 13:21:02 · 1943 阅读 · 1 评论 -
【linux】Valgrind工具集详解(十一):Massif(堆分析器)
Massif是一个堆分析器。它测量程序使用的堆内存量。这包括有用空间和为记账和对齐目的分配的额外字节。它也可以测量程序堆栈的大小,但默认情况下不会这样做。堆分析可以帮助您减少程序使用的内存量。在具有虚拟内存的现代机器上,这提供了以下好处:它可以加快你的程序 - 一个较小的程序将与你的机器的缓存更好地交互,并避免分页。如果你的程序使用大量内存,它将减少耗尽机器交换空间的机会。此外,传统的泄漏...原创 2018-11-07 20:01:09 · 6596 阅读 · 3 评论 -
【linux】Valgrind工具集详解(五):命令行详解
一、使用方法usage: valgrind [options] prog-and-args使用方法:valgrind [参数选项] 程序和参数二、选择工具tool-selection option, with default in [ ]:工具选择选项,默认值在[]中:–tool= use the Valgrind tool named [memcheck]...原创 2018-11-05 10:33:33 · 2269 阅读 · 0 评论 -
【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序
一、概述在Valgrind下运行的程序不是由CPU直接执行的。相反,它运行在Valgrind提供的合成CPU上。这就是调试器在Valgrind上运行时无法调试程序的原因。二、快速入门在使用Memcheck工具时使用GDB调试程序,启动方式如下:1、valgrind --vgdb = yes --vgdb-error = 0 可执程序2、在另一个shell中,启动GDB:gdb 可执程序...原创 2018-11-05 14:41:25 · 3661 阅读 · 0 评论 -
【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
一、概述Memcheck是一个内存错误检测器。它可以检测C和C ++程序中常见的以下问题:1、非法内存:如越界、释放后继续访问;2、使用未初始化的值;3、释放内存错误:如double-free(同一内存上执行了两次free)、或者 malloc、new、new[] 与 free、delete、delete[]错配使用4、memcpy函数(或其它相关函数)中src和dst指针重叠;5、分...原创 2018-11-05 17:15:22 · 8062 阅读 · 0 评论 -
【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
【linux】Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释。Memcheck命令行选项–leak-check=<no|summary|yes|full> [default: summary]程序执行完毕后,搜索内存泄漏。默认值为summary,只统计发生了多少次泄漏。如果设置为full或 yes,则每个单独的...原创 2018-11-05 18:22:14 · 2650 阅读 · 0 评论 -
【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)
Helgrind是一个Valgrind工具,用于检测使用POSIX pthreads线程原语的C,C ++和Fortran程序中的同步错误。POSIX pthreads中的主要抽象是:共享公共地址空间的一组线程,线程创建,线程连接,线程退出,互斥(锁),条件变量(线程间事件通知),读写器锁,自旋锁,信号量和障碍。Helgrind可以检测到三类错误,这些错误将在接下来的三个部分中详细讨论:错误...原创 2018-11-13 17:16:03 · 2798 阅读 · 2 评论 -
【GDB】gdbserver的使用,远程调试开发板
0、将gdbserver拷贝到目标板子上注:gdbserver在交叉编译工具目录/debug-root/usr/bin下可用file命令查看------------------------------------------------------------$ file gdbserver gdbserver: ELF 32-bit LSB executable, ARM原创 2017-06-29 19:13:03 · 744 阅读 · 0 评论