电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

142045_应用-Valgrind-发现-Linux-程序的内存问题

142045_应用-Valgrind-发现-Linux-程序的内存问题_第1页
1/29
142045_应用-Valgrind-发现-Linux-程序的内存问题_第2页
2/29
142045_应用-Valgrind-发现-Linux-程序的内存问题_第3页
3/29
下载后可任意编辑简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需认真考虑程序如何运行,并对问题进行有根有据的猜想。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃。在找到有问题的代码行之后,就可以确定这个函数中变量的值,函数是如何调用的,更具体点说,为什么会发 生这种错误。使用调试器查找这些信息非常简单。本文将简要介绍几种用于修复一些很难通过可视化地检查代码而发现的 bug 的技术,并阐述了如何使用在 Linux on Power 架构上可用的工具。回页首调试内存问题的工具和技术动态内存分配看起来似乎非常简单:您可以根据需要分配内存 —— 使用 malloc() 或其变种 —— 并在不需要时释放这些内存。实际上,内存管理的问题是软件中最为常见的 bug,因为通常在程序启动时这些问题并不明显。例如,程序中的内存泄漏可能开始并不为人注意,直到经过多天甚至几个月的运行才会被发现。接下来的几节将 简要介绍如何使用流行的调试器 Valgrind 来发现并调试这些最常见的内存 bug。在开始使用任何调试工具之前,请考虑这个工具是否对重新编译应用程序有益,是否可以支持具有调试信息的库(-g 选项)。假如没有启用调试信息,调试工具可以做的最好的事情也不过是猜想一段特定的代码是属于哪个函数的。这使得错误消息和概要分析输出几乎没有什么用处。使用 -g 选项,您就有可能获得一些信息来直接指出相关的代码行。ValgrindValgrind 已经在 Linux 应用程序开发社区中广泛用来调试应用程序。它尤其擅长发现内存管理的问题。它可以检查程序运行时的内存泄漏问题。这个工具目前正由 Julian Seward 进行开发,并由 Paul Mackerras 移植到了 Power 架构上。要安装 Valgrind,请从 Valgrind 的 Web 站点上下载源代码(参阅 参考资料)。切换到 Valgrind 目录,并执行下面的命令:# make# make check# make installValgrind 的错误报告下载后可任意编辑Valgrind 的输出格式如下:清单 1. Valgrind 的输出消息 # valgrind du –x –s..==29404== Address 0x1189AD84 is 0 bytes after a block of size 12 alloc'd==29404== at 0xFFB9964: malloc (vg_replace_malloc.c:130)==29404== by 0xFEE1AD0: strdup (in /lib/tls/libc.so.6)==29404== by 0xF...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

142045_应用-Valgrind-发现-Linux-程序的内存问题

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部