购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
调试符号和调试器

讨论程序调试时,我们首先想到的往往是调试器(Debugger),因为它在这个过程中是必不可少的一环。这种现象源于现代编程语言和操作系统的复杂性——要了解一个程序的状态,即使不是完全不可能,也是相当困难的。编写代码的开发者通常对调试器有一定的了解,并能或多或少地使用它。但是,我们真的对调试器有足够的了解吗?

对于这个问题,不同的人可能有不同的答案。对一些人来说,他们所需要的可能只是设置断点和检查变量的值;而其他人可能需要深入程序的位和字节级别,以获取线索。根据笔者个人的经验,每个程序员都应该了解调试器如何实现其所谓的“魔法”。虽然无须深入了解所有调试器的内部细节,如调试符号的生成、组织以及调试器如何使用它们,但理解其实现的基本概念和一些具体细节能够帮助我们了解调试器的优势和限制。

有了这些知识,将能更有效地使用调试器,特别是在处理棘手问题时。例如,如果了解调试优化后的代码(如发布版或系统库)能够访问哪些调试符号,就能知道在何处设置断点以获取所需信息;如果了解如何尽量降低调试器自身引入的干扰,如使用硬件断点,就能成功地复现问题。

本章将揭示一些调试器的内部结构,让我们能更深入地了解它。通过本章内容,我们不仅会了解调试器能做什么,还会知道它是如何做到的,更重要的是,会了解为什么有时候它无法达到我们的预期,以及在这种情况下应该如何解决。在第9章还将探讨如何通过自定义命令和插件函数来增强调试器的功能。 LsT8nBiNb0YL+bjiW9pcY4mepGRzk7thzbLYwFMaZ9uMlzepeZQmb3R7dWB1EgCw

点击中间区域
呼出菜单
上一章
目录
下一章
×