下载后可任意编辑简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需认真考虑程序如何运行,并对问题进行有根有据的猜想
在修复 bug 之前,首先要确定在源程序中的位置
例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃
在找到有问题的代码行之后,就可以确定这个函数中变量的值,函数是如何调用的,更具体点说,为什么会发 生这种错误
使用调试器查找这些信息非常简单
本文将简要介绍几种用于修复一些很难通过可视化地检查代码而发现的 bug 的技术,并阐述了如何使用在 Linux on Power 架构上可用的工具
回页首调试内存问题的工具和技术动态内存分配看起来似乎非常简单:您可以根据需要分配内存 —— 使用 malloc() 或其变种 —— 并在不需要时释放这些内存
实际上,内存管理的问题是软件中最为常见的 bug,因为通常在程序启动时这些问题并不明显
例如,程序中的内存泄漏可能开始并不为人注意,直到经过多天甚至几个月的运行才会被发现
接下来的几节将 简要介绍如何使用流行的调试器 Valgrind 来发现并调试这些最常见的内存 bug
在开始使用任何调试工具之前,请考虑这个工具是否对重新编译应用程序有益,是否可以支持具有调试信息的库(-g 选项)
假如没有启用调试信息,调试工具可以做的最好的事情也不过是猜想一段特定的代码是属于哪个函数的
这使得错误消息和概要分析输出几乎没有什么用处
使用 -g 选项,您就有可能获得一些信息来直接指出相关的代码行
ValgrindValgrind 已经在 Linux 应用程序开发社区中广泛用来调试应用程序
它尤其擅长发现内存管理的问题
它可以检查程序运行时的内存泄漏问题
这个工具目前正由 Julian Seward 进行开发,并由 Paul Mackerras 移植到了 Power 架构上