C#:
使用调试器
如何操作:
想象你有一个小程序行为不正常:
static void Main()
{
int result = Sum(1, 2);
Console.WriteLine(result);
}
static int Sum(int a, int b)
{
return a + a; // 哎呀,应该是 a + b
}
使用 Visual Studio 的调试器,在 return a + a;
旁边的左边距单击来设置一个断点。当你以 F5 运行程序时,执行将在那里暂停。将鼠标悬停在变量上以查看它们的值,或使用立即窗口评估表达式。你会看到 a
是 1,b
是 2,但 a + a
并不是我们预期的总和。将其改为 a + b
,继续运行(F5),瞧,控制台输出 3。
深入探索
调试的历史可以追溯到 1940 年代,当时一个真正的错误(一只飞蛾)被发现在一台早期的计算机中。今天的调试器,像 Visual Studio 中的调试器,提供了一套强大的功能,包括断点、逐步执行、观察窗口等等。
Visual Studio 调试器的替代品包括用于 C 风格语言的开源选项如 GDB,或用于 Python 的 pdb,以及跨平台 IDE 如 JetBrains Rider 或 VS Code,这些都为 C# 和其他语言提供调试工具。
当你深入研究调试器的实现时,你看到的是一个附加到你的应用程序进程的程序。它解释机器代码、管理内存状态并控制执行流。这是重要的材料,对于有效的调试至关重要,这就是为什么调试模式通常运行得比释放模式慢,因为在释放模式中这些钩子并不存在。