什么是调试程序?
调试程序允许用户逐行查看另一个程序。这允许用户识别不正确的代码并找出程序的流程。调试器让用户查看计算机如何看待他们的程序。
调试器对于查找程序中的语义错误非常有用。因此,它很有必要,因为它可以帮助程序员可视化程序流程。调试器可能需要练习才能使用,但它非常值得,因为它可以减少完善程序所需的时间。
调试程序的功能
调试程序提供诸如符号解析器、查询处理器、表达式解释器等基本功能。还有一些其他功能可用,例如逐步运行程序、停止程序以查看其当前状态、跟踪变量值等。一些调试程序还可以在程序运行时修改程序。
一些调试程序中有一个称为反向调试的功能。它允许用户向后查看程序的执行时间。Microsoft Visual Studio 为 C#、Visual Basic、.Net 等提供反向调试。反向调试并不常用,但它是一个非常有用的功能。
调试器列表
一些常用的调试程序包括:
GNU 调试器 (GDB)
这是一个可移植的调试器。它运行在许多类似于 Unix 的系统上。GNU 调试器也适用于许多编程语言,例如 C、C++、Pascal、Fortran、Java 等。
GDB 中有许多用于跟踪和更改程序执行的功能。用户可以使用 GDB 查看和修改程序的内部变量。此外,程序的功能可以独立于它们的正常执行进行调用。
Microsoft Visual Studio 调试器
这是一个与 Microsoft Visual Studio 一起使用的调试器。使用此调试器,可以在不退出正在运行的程序的情况下立即修改和重新编译程序代码。
Microsoft Visual Studio 调试器提供对 .Net 和 Windows 语言(如 C 和 C++)中程序调试的支持。此调试器的一个问题是它无法跟踪内核模式下编写的代码。
Radare2
这也被称为 r2。它用于反向工程和分析二进制文件。Radare2 主要围绕反汇编器构建,它将机器语言代码转换为汇编语言代码。
这个调试程序的学习曲线很陡峭,因为它没有图形用户界面。它确实有一个 Web 用户界面和一个名为 Cutter 的外部 GUI。
LLDB 调试器
这个调试器具有可重用的组件,并使用了 LLVM 项目中的许多库。与 LLVM 项目的其他部分一样,LLDB 是一个免费的开源软件。
LLDB 支持用 C、C++、Swift 等编写的多个程序的基本调试。
Valgrind
这是一个免费的调试工具,本质上是一个使用即时技术 (JIT) 的虚拟机。Valgrind 将程序转换为更简单的形式,称为中间表示。之后,它将中间表示转换为机器代码,并让主机处理器运行它。