返回介绍

软件取证:使用 valgrind

发布于 2024-10-10 23:21:29 字数 1078 浏览 0 评论 0 收藏 0

在一个像 SPIES 这样庞大而复杂的程序里面,查找错误十分费时,所以 C 黑客写了一些帮助查错的工具。其中,有一个叫

valgrind 的工具,它用于 Linux 操作系统中。

valgrind 通过伪造 malloc() 可以监控分配在堆上的数据。当程序想分配堆存储器时,valgrind 将会拦截你对 malloc() 和 free() 的调用,然后运行自己的 malloc() 和 free() 。valgrind 的 malloc() 会记录调用它的是哪段代码和分配了哪段存储器。程序结束时,valgrind 会汇报堆上有哪些数据,并告诉你这些数据是由哪段代码创建的。

准备好代码:添加调试信息

在使用 valgrind 运行代码前,你不需要做任何修改,甚至不需要重新编译代码。但为了发挥 valgrind 的最大威力,应当在可执行文件中包含调试信息。调试信息是编译时打包到可执行文件中的附加数据,比如某段代码在源文件中的行号。只要有调试信息,valgrind 就能提供更多有助于发现存储器泄漏的信息。

为了在可执行文件中加入调试信息,需要加上-g 开关,并重新编译源代码。

真相只有一个:审问代码

为了弄明白 valgrind 是如何工作的,我们在 Linux 命令行中打开它,用它审问几次 SPIES 程序。

首先,我们用程序来辨认默认嫌疑犯 Vinny the Spoon。在命令行启动 valgrind ,加上--leak-check=full 选项,并把你想运行的程序传给 valgrind :

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文