什么是调试器程序?

调试程序是一种允许用户逐行查看另一个程序的程序。这允许用户识别不正确的代码并找出程序的流程。调试器让用户看到他们的程序是如何被计算机查看的。

调试器对于查找程序中的语义错误非常有用。因此,它是必要的,因为它可以帮助程序员可视化程序流程。调试器可能需要练习才能使用,但它非常值得,因为它减少了完善程序所需的时间。

调试器程序的特点

调试器程序提供基本功能,例如符号解析器、查询处理器、表达式解释器等。还有其他可用功能,例如逐步运行程序、停止程序以查看其当前状态、跟踪变量值等。一些调试器程序还可以在程序运行时对其进行修改。

在某些调试器程序中有一个称为反向调试的功能。它允许用户及时向后查看程序的执行情况。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 Debugger 支持调试 .Net 和 Windows 语言(如 C 和 C++)中的程序。这个调试器的一个问题是它无法追踪到以内核模式编写的代码。

雷达2

这也称为r2。它用于逆向工程和分析二进制文件。Radare2 主要围绕反汇编程序构建,它将机器语言代码翻译成汇编语言代码。

这个调试器程序有一个陡峭的学习曲线,因为它没有图形用户界面。它确实有一个 Web 用户界面和一个名为 Cutter 的外部 GUI。

LLDB 调试器

该调试器具有可重用的组件,并使用了 LLVM 项目中的大量库。LLDB 是一个免费的开源软件,就像 LLVM 项目的其他部分一样。

LLDB 支持对用 C、C++、Swift 等编写的多个程序进行基本调试。

瓦尔格林德

这是一个免费的调试工具,本质上是一个使用即时技术 (JIT) 的虚拟机。Valgrind 将程序转换为一种更简单的形式,称为中间表示。之后,它将中间表示转换为机器代码并让主机处理器运行它。