大家好,今天我们来聊聊计算机领域中常见的术语——debug。debug这个词的由来很有趣,源自美国海军准将及计算机科学家葛丽丝·霍波(grace hopper)。她在调试设备时发现了一只飞蛾卡在继电器的触点中,导致机器无法运行,于是她幽默地将程序故障称为“臭虫(bug)”,而排除故障的过程就称为debug。这个故事告诉我们,很多专业术语其实是偶然间产生的。
那么,Debug在今天的计算机领域中具体指什么呢?从本质上讲,Debug是一种程序,一种调试工具,供程序员用来检查和修改问题。更正式地说,Debug是DOS和Windows提供的实模式(即8086方式)程序的调试工具。严格来说,Debug是在DOS环境下使用的程序,因此在使用Debug之前,我们需要先进入DOS环境。目前,进入DOS环境有以下两种方法:
-
重启计算机,进入DOS,此时进入的是实模式的DOS。
-
在Windows界面进入DOS,此时进入的是虚拟8086模式的DOS。
这里可能有人会问,实模式和虚拟8086模式是什么意思?简单来说,CPU的工作模式分为实模式和保护模式两种,而虚拟8086模式是保护模式下的一种任务运行模式,并不是CPU的工作模式。大家平时使用的Windows系统运行在保护模式下,而计算机在刚启动时运行在实模式下,启动Windows系统后进入保护模式,除非关闭系统,否则不会回到实模式。如果要一直运行在实模式下,就需要使用DOS等实模式下的操作系统。然而,在Windows系统中加载的DOS程序是在虚拟8086模式下运行的。由于篇幅有限,这里就不详细讲解DOS的相关知识了,有兴趣的朋友可以留言讨论。
回到Debug的话题,有一点需要注意,Debug将所有数据都视为字节处理,因此可以用来检查和修改内存中任何位置的字节。它可以逐指令执行某个程序,以验证程序运行的正确性,也可以在机器码级别追踪执行过程、比较指令执行前后的值、比较和移动内存中的数据范围、读写文件和磁盘扇区。
值得一提的是,Debug在汇编语言中的应用非常广泛。Debug的命令大约有20多个,与汇编语言密切相关的有R命令、D命令、E命令、U命令、T命令、A命令等,每个命令的作用不同。例如,D命令用于查看内存内容,E命令用于修改内存内容,T命令用于执行一条机器指令等等。这些命令都有固定的使用格式,这里就不一一详述了。我们今天的重点是让大家了解并理解Debug的含义,有余力的朋友可以自行学习和研究如何使用它。
各位,关于Debug的概念,大家都清楚了吗?