Valgrind
编辑Valgrind ,是一套用于计算机程序调试、分析和动态错误分析的编程工具集合,在 Linux、Android 和 macOS 操作系统下普遍支持 x86、AMD64、s390x、Arm、PPC32 和 PPC64 架构。
系统结构
编辑Valgrind 由启动程序时可以选择的各种工具组成。 它们的主要区别在于目的和范围。 使用这些工具可以找到难以定位的各种错误,例如 B. 域边界溢出或使用了未初始化的变量。 此外,还可以非常轻松地分析和隔离性能问题。
Valgrind 是一个面向命令行的程序,它有各种图形前端。
系统实现
编辑Valgrind 的核心是具有即时 编译功能的虚拟机。 要调试的程序都不直接在主机 CPU 上运行,而是 Valgrind 将程序翻译成临时的、更简单的和平台无关的字节码,即所谓的 Vex IR。 转换后,各种 Valgrind 工具可以在 Valgrind 获取新代码之前执行各种转换(例如xxx内存或创建运行配置文件),将其编译为机器代码并最终运行它。
虽然转换到 Vex IR 并返回会使程序运行速度慢很多倍,加上各种工具的时间,Vex IR 更适合调试和工具构建,执行时间较慢对大多数程序来说不是问题。 此外,还有一个优点是无需准备要测试的程序,甚至不必提供源代码。
工具
编辑内存检查
调试程序的主要工具是memcheck,可以发现如下错误:
呼叫研磨
callgrind 对于测量程序很有趣,因为它可以确定有关所用程序的大量统计信息。 这些数字在不同系统上可以直接比较,因为它们不衡量所需的执行时间,而是衡量 CPU 周期数。 它还指示算法是否可以在 CPU 的缓存中运行得特别快,以及它命中或未命中的频率。 缓存的大小可以变化,因此可以模拟不同的 CPU。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/372923/