问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

bug和debug是什么意思?

发布网友 发布时间:2022-04-23 19:04

我来回答

16个回答

懂视网 时间:2022-04-08 13:04

想象把断点放在函数的开头,然后用 thread return 命令重写函数的行为,然后继续。想象一下让这个过程自动化,听起来不错,不是吗?

管理断点

Xcode 提供了一系列工具来创建和管理断点。我们会一个个看过来并介绍 LLDB 中等价的命令 (是的,你可以在调试器内部添加断点)。

在 Xcode 的左侧面板,有一组按钮。其中一个看起来像断点。点击它打开断点导航,这是一个可以快速管理所有断点的面板。

技术分享

在这里你可以看到所有的断点 - 在 LLDB 中通过 breakpoint list (或者 br li) 命令也做同样的事儿。你也可以点击单个断点来开启或关闭 - 在 LLDB 中使用 breakpoint enable <breakpointID> 和 breakpoint disable <breakpointID>

(lldb) br li
Current breakpoints:
1: file = ‘/Users/arig/Desktop/DebuggerDance/DebuggerDance/main.m‘, line = 16, locations = 1, resolved = 1, hit count = 1

 1.1: where = DebuggerDance`main + 27 at main.m:16, address = 0x000000010a3f6cab, resolved, hit count = 1

(lldb) br dis 1
1 breakpoints disabled.
(lldb) br li
Current breakpoints:
1: file = ‘/Users/arig/Desktop/DebuggerDance/DebuggerDance/main.m‘, line = 16, locations = 1 Options: disabled

 1.1: where = DebuggerDance`main + 27 at main.m:16, address = 0x000000010a3f6cab, unresolved, hit count = 1

(lldb) br del 1
1 breakpoints deleted; 0 breakpoint locations disabled.
(lldb) br li
No breakpoints currently set.

创建断点

在上面的例子中,我们通过在源码页面器的滚槽 16 上点击来创建断点。你可以通过把断点拖拽出滚槽,然后释放鼠标来删除断点 (消失时会有一个非常可爱的噗的一下的动画)。你也可以在断点导航页选择断点,然后按下删除键删除。

要在调试器中创建断点,可以使用 breakpoint set 命令。

(lldb) breakpoint set -f main.m -l 16
Breakpoint 1: where = DebuggerDance`main + 27 at main.m:16, address = 0x000000010a3f6cab

也可以使用缩写形式 br。虽然 b 是一个完全不同的命令 (_regexp-break 的缩写),但恰好也可以实现和上面同样的效果。

(lldb) b main.m:17
Breakpoint 2: where = DebuggerDance`main + 52 at main.m:17, address = 0x000000010a3f6cc4

也可以在一个符号 (C 语言函数) 上创建断点,而完全不用指定哪一行 

(lldb) b isEven
Breakpoint 3: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x000000010a3f6d00
(lldb) br s -F isEven
Breakpoint 4: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x000000010a3f6d00

这些断点会准确的停止在函数的开始。Objective-C 的方法也完全可以:

(lldb) breakpoint set -F "-[NSArray objectAtIndex:]"
Breakpoint 5: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010ac7a950
(lldb) b -[NSArray objectAtIndex:]
Breakpoint 6: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010ac7a950
(lldb) breakpoint set -F "+[NSSet setWithObject:]"
Breakpoint 7: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010abd3820
(lldb) b +[NSSet setWithObject:]
Breakpoint 8: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010abd3820

如果想在 Xcode 的UI上创建符号断点,你可以点击断点栏左侧的 + 按钮。

技术分享

然后选择第三个选项:

技术分享

这时会出现一个弹出框,你可以在里面添加例如 -[NSArray objectAtIndex:] 这样的符号断点。这样每次调用这个函数的时候,程序都会停止,不管是你调用还是苹果调用。

如果你 Xcode 的 UI 上右击任意断点,然后选择 "Edit Breakpoint" 的话,会有一些非常诱人的选择。

技术分享

这里,断点已经被修改为只有当 i 是 99 的时候才会停止。你也可以使用 "ignore" 选项来告诉断点最初的 n 次调用 (并且条件为真的时候) 的时候不要停止。

接下来介绍 ‘Add Action‘ 按钮...

断点行为 (Action)

上面的例子中,你或许想知道每一次到达断点的时候 i 的值。我们可以使用 p i 作为断点行为。这样每次到达断点的时候,都会自动运行这个命令。

技术分享

你也可以添加多个行为,可以是调试器命令,shell 命令,也可以是更直接的打印:

技术分享

可以看到它打印 i,然后大声念出那个句子,接着打印了自定义的表达式。

下面是在 LLDB 而不是 Xcode 的 UI 中做这些的时候,看起来的样子。

(lldb) breakpoint set -F isEven
Breakpoint 1: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x00000001083b5d00
(lldb) breakpoint modify -c ‘i == 99‘ 1
(lldb) breakpoint command add 1
Enter your debugger command(s). Type ‘DONE‘ to end.
> p i
> DONE
(lldb) br li 1
1: name = ‘isEven‘, locations = 1, resolved = 1, hit count = 0
 Breakpoint commands:
 p i

Condition: i == 99

 1.1: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x00000001083b5d00, resolved, hit count = 0 

接下来说说自动化。

赋值后继续运行

看编辑断点弹出窗口的底部,你还会看到一个选项: "Automatically continue after evaluation actions." 。它仅仅是一个选择框,但是却很强大。选中它,调试器会运行你所有的命令,然后继续运行。看起来就像没有执行任何断点一样 (除非断点太多,运行需要一段时间,拖慢了你的程序)。

这个选项框的效果和让最后断点的最后一个行为是 continue 一样。选框只是让这个操作变得更简单。调试器的输出是:

(lldb) breakpoint set -F isEven
Breakpoint 1: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x00000001083b5d00
(lldb) breakpoint command add 1
Enter your debugger command(s). Type ‘DONE‘ to end.
> continue
> DONE
(lldb) br li 1
1: name = ‘isEven‘, locations = 1, resolved = 1, hit count = 0
 Breakpoint commands:
 continue

 1.1: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x00000001083b5d00, resolved, hit count = 0

执行断点后自动继续运行,允许你完全通过断点来修改程序!你可以在某一行停止,运行一个 expression 命令来改变变量,然后继续运行。

例子

想想所谓的"打印调试"技术吧,不要这么做:

NSLog(@"%@", whatIsInsideThisThing);

而是用个打印变量的断点替换 log 语句,然后继续运行。

也不要:

int calculateTheTrickyValue {
 return 9;

 /*
 Figure this out later.
 ...
}

而是加一个使用 thread return 9 命令的断点,然后让它继续运行。

符号断点加上 action 真的很强大。你也可以在你朋友的 Xcode 工程上添加一些断点,并且加上大声朗读某些东西的 action。看看他们要花多久才能弄明白发生了什么。??

完全在调试器内运行

在开始舞蹈之前,还有一件事要看一看。实际上你可以在调试器中执行任何 C/Objective-C/C++/Swift 的命令。唯一的缺点就是不能创建新函数... 这意味着不能创建新的类,block,函数,有虚拟函数的 C++ 类等等。除此之外,它都可以做。

我们可以申请分配一些字节:

(lldb) e char *$str = (char *)malloc(8)
(lldb) e (void)strcpy($str, "munkeys")
(lldb) e $str[1] = ‘o‘
(char) $0 = ‘o‘
(lldb) p $str
(char *) $str = 0x00007fd04a900040 "monkeys"

我们可以查看内存 (使用 x 命令),来看看新数组中的四个字节:

(lldb) x/4c $str
0x7fd04a900040: monk

我们也可以去掉 3 个字节 (x 命令需要斜引号,因为它只有一个内存地址的参数,而不是表达式;使用 help x 来获得更多信息):

(lldb) x/1w `$str + 3`
0x7fd04a900043: keys

做完了之后,一定不要忘了释放内存,这样才不会内存泄露。(哈,虽然这是调试器用到的内存):

(lldb) e (void)free($str)

让我们起舞

现在我们已经知道基本的步调了,是时候开始跳舞并玩一些疯狂的事情了。我曾经写过一篇 NSArray 深度探究的博客。这篇博客用了很多 NSLog 语句,但实际上我的所有探索都是在调试器中完成的。看看你能不能弄明白怎么做的,这会是一个有意思的练习。

不用断点调试

程序运行时,Xcode 的调试条上会出现暂停按钮,而不是继续按钮:

技术分享

点击按钮会暂停 app (这会运行 process interrupt 命令,因为 LLDB 总是在背后运行)。这会让你可以访问调试器,但看起来可以做的事情不多,因为在当前作用域没有变量,也没有特定的代码让你看。

这就是有意思的地方。如果你正在运行 iOS app,你可以试试这个: (因为全局变量是可访问的)

 (lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
<UIWindow: 0x7f82b1fa8140; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x7f82b1fa92d0>; layer = <UIWindowLayer: 0x7f82b1fa8400>>
 | <UIView: 0x7f82b1d01fd0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7f82b1e2e0a0>>

你可以看到整个层次。Chisel 中 pviews 就是这么实现的。

更新UI

有了上面的输出,我们可以获取这个 view:

(lldb) e id $myView = (id)0x7f82b1d01fd0

然后在调试器中改变它的背景色:

(lldb) e (void)[$myView setBackgroundColor:[UIColor blueColor]]

但是只有程序继续运行之后才会看到界面的变化。因为改变的内容必须被发送到渲染服务中,然后显示才会被更新。

渲染服务实际上是一个另外的进程 (被称作 backboardd)。这就是说即使我们正在调试的内容所在的进程被打断了,backboardd也还是继续运行着的。

这意味着你可以运行下面的命令,而不用继续运行程序:

(lldb) e (void)[CATransaction flush]

即使你仍然在调试器中,UI 也会在模拟器或者真机上实时更新。Chisel 为此提供了一个别名叫做 caflush,这个命令被用来实现其他的快捷命令,例如 hide <view>show <view> 以及其他很多命令。所有 Chisel 的命令都有文档,所以安装后随意运行 help show 来看更多信息。

Push 一个 View Controller

想象一个以 UINavigationController 为 root ViewController 的应用。你可以通过下面的命令,轻松地获取它:

(lldb) e id $nvc = [[[UIApplication sharedApplication] keyWindow] rootViewController]

然后 push 一个 child view controller:

(lldb) e id $vc = [UIViewController new]
(lldb) e (void)[[$vc view] setBackgroundColor:[UIColor yellowColor]]
(lldb) e (void)[$vc setTitle:@"Yay!"]
(lldb) e (void)[$nvc pushViewContoller:$vc animated:YES]

最后运行下面的命令:

(lldb) caflush // e (void)[CATransaction flush]

navigation Controller 就会立刻就被 push 到你眼前。

查找按钮的 target

想象你在调试器中有一个 $myButton 的变量,可以是创建出来的,也可以是从 UI 上抓取出来的,或者是你停止在断点时的一个局部变量。你想知道,按钮按下的时候谁会接收到按钮发出的 action。非常简单:

(lldb) po [$myButton allTargets]
{(
 <MagicEventListener: 0x7fb58bd2e240>
)}
(lldb) po [$myButton actionsForTarget:(id)0x7fb58bd2e240 forControlEvent:0]
<__NSArrayM 0x7fb58bd2aa40>(
_handleTap:
)

现在你或许想在它发生的时候加一个断点。在 -[MagicEventListener _handleTap:] 设置一个符号断点就可以了,在 Xcode 和 LLDB 中都可以,然后你就可以点击按钮并停在你所希望的地方了。

观察实例变量的变化

假设你有一个 UIView,不知道为什么它的 _layer 实例变量被重写了 (糟糕)。因为有可能并不涉及到方法,我们不能使用符号断点。相反的,我们想监视什么时候这个地址被写入。

首先,我们需要找到 _layer 这个变量在对象上的相对位置:

(lldb) p (ptrdiff_t)ivar_getOffset((struct Ivar *)class_getInstanceVariable([MyView class], "_layer"))
(ptrdiff_t) $0 = 8

现在我们知道 ($myView + 8) 是被写入的内存地址:

(lldb) watchpoint set expression -- (int *)$myView + 8
Watchpoint created: Watchpoint 3: addr = 0x7fa554231340 size = 8 state = enabled type = w
 new value: 0x0000000000000000

这被以 wivar $myView _layer 加入到 Chisel 中。

非重写方法的符号断点

假设你想知道 -[MyViewController viewDidAppear:] 什么时候被调用。如果这个方法并没有在MyViewController 中实现,而是在其父类中实现的,该怎么办呢?试着设置一个断点,会出现以下结果:

(lldb) b -[MyViewController viewDidAppear:]
Breakpoint 1: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.

因为 LLDB 会查找一个符号,但是实际在这个类上却找不到,所以断点也永远不会触发。你需要做的是为断点设置一个条件 [self isKindOfClass:[MyViewController class]],然后把断点放在 UIViewController 上。正常情况下这样设置一个条件可以正常工作。但是这里不会,因为我们没有父类的实现。

viewDidAppear: 是苹果实现的方法,因此没有它的符号;在方法内没有 self 。如果想在符号断点上使用 self,你必须知道它在哪里 (它可能在寄存器上,也可能在栈上;在 x86 上,你可以在 $esp+4 找到它)。但是这是很痛苦的,因为现在你必须至少知道四种体系结构 (x86,x86-64,armv7,armv64)。想象你需要花多少时间去学习命令集以及它们每一个的调用约定,然后正确的写一个在你的超类上设置断点并且条件正确的命令。幸运的是,这个在 Chisel 被解决了。这被成为 bmessage

(lldb) bmessage -[MyViewController viewDidAppear:]
Setting a breakpoint at -[UIViewController viewDidAppear:] with condition (void*)object_getClass((id)$rdi) == 0x000000010e2f4d28
Breakpoint 1: where = UIKit`-[UIViewController viewDidAppear:], address = 0x000000010e11533c

LLDB 和 Python

LLDB 有内建的,完整的 Python 支持。在LLDB中输入 script,会打开一个 Python REPL。你也可以输入一行 python 语句作为 script 命令 的参数,这可以运行 python 语句而不进入REPL:

(lldb) script import os
(lldb) script os.system("open http://www.objc.io/")

这样就允许你创造各种酷的命令。把下面的语句放到文件 ~/myCommands.py 中:

def caflushCommand(debugger, command, result, internal_dict):
 debugger.HandleCommand("e (void)[CATransaction flush]")

然后再 LLDB 中运行:

command script import ~/myCommands.py

或者把这行命令放在 /.lldbinit 里,这样每次进入 LLDB 时都会自动运行。Chisel 其实就是一个 Python 脚本的集合,这些脚本拼接 (命令) 字符串 ,然后让 LLDB 执行。很简单,不是吗?

紧握调试器这一武器

LLDB 可以做的事情很多。大多数人习惯于使用 ppons 和 c, 但实际上除此之外,LLDB 可以做的还有很多。掌握所有的命令 (实际上并不是很多),会让你在揭示代码运行时的运行状态,寻找 bug,强制执行特定的运行路径时获得更大的能力。你甚至可以构建简单的交互原型 - 比如要是现在以 modal 方式弹出一个 View Controller 会怎么样?使用调试器,一试便知。

打开 LLDB,输入 help,看一看列举的命令。你尝试过多少?用了多少?

但愿 NSLog 看起来不再那么吸引你

 

Bug调试(lldb)

标签:

热心网友 时间:2022-04-08 10:12

bug

英 [bʌɡ] 美 [bʌɡ] 

n. 臭虫;*;[计]漏洞 v. 窃听;打扰;失去(镇定)

名词: bugger 过去式: bugged 过去分词: bugged 现在分词: bugging 第三人称单数: bugs

Debug

英 [ˌdiː'bʌɡ] 美 [ˌdiː'bʌɡ] 

v. 调试;驱除(某处的)害虫;排除障碍;寻出并拆除 ... 内的*

名词: debugger 过去式: debugged 过去分词: debugged 现在分词: debugging 第三人称单数: debugs

扩展资料:

bug双解释义

1.n. (名词)

[C]虫子 any small insect

[C]〈非正〉病菌 a small living thing causing disease

[C](机器等)故障 a fault or difficulty in a machine, etc.

[C]〈俚〉* an apparatus for listening secretly to other people's conversations

2.v. (动词)

vt. 〈俚〉在…装*; 窃听 fit with a secret listening apparatus

vt. 〈美俚〉打扰,使厌烦 annoy; irritate

英英释义

bug的用法和样例:

用作名词 (n.)

Why do we need bug spray?
我们要杀虫剂干什么?

The police tested the room for bugs.
*检查房间里是否放有*。

用作动词 (v.)

Be careful what you say; our conversation may be being bugged.
说话要当心,咱们的话可能被窃听了。

Don't bug me with petty details.
不要讲那些琐碎的细节来烦我。

That man really bugs me.
那个人真把我惹火了。

Debug英英释义

Verb:

1.locate and correct errors in a computer program code;

"debug this program"

例句

用作动词 (v.)

I am trying to debug a screen-painting problem.
我在尝试调试屏幕绘制问题。

热心网友 时间:2022-04-08 11:30

bug是一个英文单词,本意是臭虫、缺陷、损坏、犯贫、*、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。BUG可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。

DEBUG是一种计算机程序。排除程序故障叫DEBUG,是计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料

debug的功能包括以下方面:

1、直接输入,更改,跟踪,运行汇编语言源程序。

2、观察操作系统的内容。

3、查看ROM BIOS的内容。

4、观察更改RAM内部的设置值。

5、以扇区或文件的方式读写软盘数据。

DEBUG把所有数据都作为字节序列处理。因此它可以读任何类型的文件。DEBUG可以识别两种数据: 十六进制数据和ASCⅡ码字符。它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。

在DEBUG中输入数据有两种方法: 提示方法和非提示方法。在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。

然后用户就可以看到该地址中已有内容及一个冒号提示符。此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。

在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。

参考资料来源:百度百科-bug

参考资料来源:百度百科-debug命令

热心网友 时间:2022-04-08 13:04

bug是一个英文单词,本意是臭虫、缺陷、损坏、犯贫、*、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。BUG可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。

DEBUG是一种计算机程序。排除程序故障叫DEBUG,是计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料:

Debug 详细命令列表:

Debug:A(汇编)—汇编 8086/8087/8088 记忆码

Debug:C(比较)—比较内存的两个部分

Debug:D(转储)—显示部分内存的内容

Debug:E(键入) —从指定地址开始,将数据输入到内存

Debug:F(填充)—使用指定值填充一段内存

Debug:G(转向)—运行在内存中的可执行文件

Debug:H(十六进制)—执行十六进制运算

Debug:I(输入)—显示来自特定端口的 1 字节值

Debug:L(加载)—将文件或磁盘扇区内容加载到内存

Debug:M(移动)—复制内存块中的内容

Debug:N(名称)—为 l 或 w 命令指定文件,或者指定正在测试的文件的参数

Debug:O(输出)—向输出端口发送 1 个字节的值

Debug:P(执行)—执行循环、重复的字符串指令、软件中断或子例程

Debug:Q(退出)—停止 Debug 会话

Debug:r(寄存器)—显示或改变一个或多个寄存器

Debug:s(搜索)—在部分内存中搜索一个或多个字节值的模式

参考资料:百度百科 DEBUG

热心网友 时间:2022-04-08 14:56

1、“bug”一词在英文中的意思为“ 臭虫、缺陷、损坏、犯贫、*、小虫”等,现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。

由于现代社会的发展,bug另有一种引申意义,用来形容某事物厉害的超乎想象,BUG可以使电脑系统崩溃、容易被施诈者攻击。

2、DEBUG是一种计算机程序。马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。

于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料

所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。

软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。仅就狭义概念而言,软件出现Bug的原因有:

1、对各种流程分支考虑不全面;

2、对边界情况的处理不到位;

3、编码时的手误。

任何软件在发布时都不可能是绝对的零Bug。在软件过程管理中通行的CMM(能力成熟度模型)中规定的软件质量标准是(Bug个数/千行源码):

CMM1级 11.95

CMM2级 5.52

CMM3级 2.39

CMM4级 0.92

CMM5级 0.32

DOS中的Debug是为DOS提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它为汇编语言程序员提供了有效的调试手段。

debug的功能:

1. 直接输入、更改、跟踪、运行汇编程序;

2. 观察操作系统的内容;

3. 查看ROM BIOS的内容;

4. 观察更改RAM内部的设置值;

5. 以扇区或文件的方式读写软盘数据。

参考资料:百度百科-bug

参考资料:百度百科-debug



热心网友 时间:2022-04-08 17:04

回答如下:

bug是一个英文单词,本意是臭虫、缺陷、损坏、犯贫、*、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。BUG可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。

DEBUG是一种计算机程序。排除程序故障叫DEBUG,是计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料

Debug:A(汇编)—汇编 8086/8087/8088 记忆码

Debug:C(比较)—比较内存的两个部分

Debug:D(转储)—显示部分内存的内容

Debug:E(键入) —从指定地址开始,将数据输入到内存

Debug:F(填充)—使用指定值填充一段内存

Debug:G(转向)—运行在内存中的可执行文件

Debug:H(十六进制)—执行十六进制运算

Debug:I(输入)—显示来自特定端口的 1 字节值

Debug:L(加载)—将文件或磁盘扇区内容加载到内存

Debug:M(移动)—复制内存块中的内容

Debug:N(名称)—为 l 或 w 命令指定文件,或者指定正在测试的文件的参数

Debug:O(输出)—向输出端口发送 1 个字节的值

Debug:P(执行)—执行循环、重复的字符串指令、软件中断或子例程

Debug:Q(退出)—停止 Debug 会话

Debug:r(寄存器)—显示或改变一个或多个寄存器

Debug:s(搜索)—在部分内存中搜索一个或多个字节值的模式

Debug:T(跟踪)—执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要

执行的指令的解码形式

Debug:U(反汇编)—反汇编字节并显示相应的原语句

Debug:W(写入)—将被测试文件写入磁盘

Debug:XA(分配扩展内存)

Debug:XD(取消分配扩展内存)

Debug:XM(映射扩展内存页)

Debug:XS(显示扩展内存状态)

参考资料来源:百度百科:DEBUG

热心网友 时间:2022-04-08 19:28

Bug表示电脑系统或程序中隐藏的错误、缺陷或问题。 

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。

“BUG”的由来: 

Bug一词的原意是“臭虫”或“虫子”。但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢? 

原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。

可能正是由于计算机运行产生的光和热,引得一只小虫子Bug钻进了一支真空管内,导致整个计算机无法工作。

研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。 

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。

遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。 

扩展资料

美国的艾肯博士研制出了马克2号计算机,在研制过程中,诞生了一个新词“debug”来表示排除计算机故障。

在盛夏的时候,美国水上研究中心使用马克-Ⅱ计算机进行数据处理时,经常停止工作。

其原因是,由于天气炎热加上机房无空调设备,致使大量飞蛾在机房中乱飞,这些飞蛾飞到正要闭合的继电器触点之间被继电器触电夹住,导致电路中断,造成工作故障。

只需要将飞蛾找出拿掉,就可以正常工作,因为飞蛾的英文是bug,所以工作人员创出了debug表示排除计算机故障。

热心网友 时间:2022-04-08 22:10

1、BUG

程序错误(英语:Bug),在程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功能不正常、体验不佳、死机、数据丢失、非正常中断等现象。

中文常称BUG为“缺陷”。而且,“缺陷”一词更能反映事情的本质。因为“臭虫”是从外面爬进去的,并非程序本身有问题。而程序本身存在的问题,是程序原来就具有的。因此,在这里将BUG翻译为“系统漏洞”更合适。

2、DEBUG

DEBUG是一种计算机程序。马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。

有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。

如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。


扩展资料:

软件Bug的严重级别

指Bug 破坏系统的危险程度。 Bug 严重级别说明了这个 Bug 的破坏程度。严重级别是与 Bug 紧密联系、永恒不变的一个特性。 Bug 的严重级别分为四类,下面进行分别描述 :

级别—— 严重 :这是最危险的级别。发现了严重级别的Bug 后测试就不允许继 续进行了,除特殊点外。弹出一些错误信息或系统瘫痪导致全部或部分应用*关毕这些都属于严重级别的Bug 。

级别—— 高 :高的严重级别指的是导致产品不能按照预期的要求那样运行或者 导致一些功能不能正常运行而不能满足客户需求的错误。这种类别的 Bug 可以通过某种工作区来解决。

级别—— 中等 :这种类型的缺陷对应用程序的性能没有影响。但是由于没有实 现协议上的一些标准或客户的要求,这些缺陷也是不可接受的。

级别—— 低 :低优先级和很小的缺陷属于这类缺陷,这种缺陷不会影响到产品 的功能。这种缺陷一般是用户界面、装点方面的美观问题。

参考资料:

百度百科.DEBUG

百度百科.BUG



热心网友 时间:2022-04-09 01:08

bug的定义:

本意是臭虫、缺陷、损坏、犯贫、*、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。

由于现代社会的发展,bug另有一种引申意义,用来形容某事物厉害的超乎想象,BUG可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。

DEBUG的定义:

DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。

它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

扩展资料:

bug和debug的由来:

第一代计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只虫子Bug钻进了一支真空管内,导致整个计算机无法工作。

研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷、漏洞或问题。

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”。遗憾的是,在中文里面,至今仍没有与“Bug”准确 对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。 

参考资料:百度百科-bug

参考资料:百度百科-debug命令

热心网友 时间:2022-04-09 04:22

bug是一个英文单词,本意是臭虫、缺陷、损坏、犯贫、*、小虫等意思。现在人们将在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。

由于现代社会的发展,bug另有一种引申意义,用来形容某事物厉害的超乎想象,BUG可以使电脑系统崩溃、容易被施诈者攻击,现有修复漏洞的工具。

Debug原意是杀虫子。而与“bug”相对,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料

Bug用于电脑的来源:

格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1947年9月9日,赫柏对Harvard Mark II设置好17000个继电器进行编程后。

技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。

所以在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”(中文称作“调试”),意即“捉虫子”或“杀虫子”。

后来就直接用bug 在很多的软件测试中 都用Bug来说明那些问题。

参考资料:百度百科- bug(词语释义)

热心网友 时间:2022-04-09 07:54

bug一词在英文中的意思为“ 臭虫、缺陷、损坏、犯贫、*、小虫”等,现在人们将在电脑系

统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。

程序错误(英语:Bug),在程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功

能不正常、体验不佳、死机、数据丢失、非正常中断等现象。中文常称BUG为“缺陷”。“缺

陷”一词更能反映事情的本质。因为“臭虫”是从外面爬进去的,并非程序本身有问题。而程序本

身存在的问题,是程序原来就具有的。因此,在这里将BUG翻译为“系统漏洞”更合适。在程序运

用中,特别是应用程序,会出现莫名其妙的警告,让普通用户丈二和尚----摸不着头脑,这些警告常

被称作“BUG”。

DEBUG是一种计算机程序。马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace 

Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一

天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了

机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,

而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就

叫DEBUG。DEBUG在windows系统中也是极其重要的编译操作。

扩展资料:

软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发

现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。仅就狭义概念而言,软件出

现Bug的原因有:

1、对各种流程分支考虑不全面;

2、对边界情况的处理不到位;

3、编码时的手误。

任何软件在发布时都不可能是绝对的零Bug。在软件过程管理中通行的CMM(能力成熟度模型)中规定的软件质量标准是(Bug个数/千行源码):

CMM1级 11.95

CMM2级 5.52

CMM3级 2.39

CMM4级 0.92

CMM5级 0.32

DOS中的Debug

是为DOS提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,它是在字符界面下以单字

符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力,当然,它

为汇编语言程序员提供了有效的调试手段,它的功能包括以下几个方面。

1. 直接输入、更改、跟踪、运行汇编程序;

2. 观察操作系统的内容;

3. 查看ROM BIOS的内容;

4. 观察更改RAM内部的设置值;

5. 以扇区或文件的方式读写软盘数据。

在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器

(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值:

如:用段地址和段内地址表示FOFF:0100

用段寄存器和段内地址表示CSF:0100←CS指向F000

“Bug”的创始人 赫柏的报告格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电

脑专家,也是最早将人类语言融入到电脑程序的人之一。而代表电脑程序出错的“bug” 这名字,

正是由赫柏所取的。1945年的一天,赫柏对Harvard Mark II设置好17000个继电器进行编程后,她

的工作却毁于一只飞进电脑造成短路的飞蛾。在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表

示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。现在软件和游戏等越来越复

杂,需要考虑到的东西很多.往往是在设计之初会有一些逻辑上的错误出现,导,或者出现了不是设计者

想要的情景,这些都是bug。

参考资料:百度百科-bug

百度百科-DEBUG

热心网友 时间:2022-04-09 11:42

“BUG”的由来:

Bug一词的原意是“臭虫”或“虫子”。但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢?

原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子�Bug 钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。

与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。

所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。软件的错误全是厂家设计错误。那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。用户可能会执行不正确的操作,比如本来是做加法但按了减法键。这样用户会得到一个不正确的结果,但不会引起bug发作。软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。只要允许用户做的,都是合法的。用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。
从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)发现的。哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。
1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。
突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”[1]
从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

debug是用来调试程序的
1. 非物理0磁道坏软盘的修复

此种损坏从软盘盘面上来看并没有明显的划伤和霉变。一般可以恢复其数据,也可是软盘重新在利用。
处理方法如下:
Ⅰ. 进入debug
Ⅱ. 取一张引导区没有损坏的好磁盘,插入软驱
-L 100 0 0 1
Ⅲ. 插入损坏的磁盘到软驱
-W 100 0 0 1
-Q
注意:好盘与坏盘容量必须相同

2. 物理0磁道坏软盘中的数据读取

对于0磁道损坏的磁盘,一般来说是应该抛弃了,当你也不妨试一试已下方法:
磁化处理:用较强的磁铁在靠近坏磁盘的表面处反复移动,切不可碰到磁盘介质,以免划伤表面,然后在试试格式化。
软盘换面:小心的将磁盘打开,坚磁片与金属芯片分开,方面后再按原来的方法粘在一起即可,在重新格式化。
Diskfix:对于diskfix想必大家都用的比较多了,里面的磁盘修复功能很好用的。能修复大多数磁盘表面错误。

3. 硬盘启动失败处理

在正常机上格式化一张软盘,无其它数据
进入debug
-L 0 2 0 1
-W 0 0 0 1
-Q
用系统盘启动故障机后
在进入debug
-L 0 0 0 1
-w 0 2 0 1
-Q

4. 软盘不能正确读取解决方法

如果使用软盘时出现如下提示
General failure error reading drive A
可以用以下方法解决:
将一张好盘插入软驱
进入debug
-A 100
****:*100 MOV AL,0
****:**** MOV CX,1
****:**** MOV DX,0
****:**** MOV BX,1000
****:**** INT 25
****:**** INT 20
回车
-G=0100

插入坏盘并进入Debug
-A 200
****:*100 MOV AL,1
****:**** MOV CX,1
****:**** MOV DX,0
****:**** MOV BX,1000
****:**** INT 26
****:**** INT 20
回车
-G=200

5. CMOS 数据的保存,恢复

CMOSRAM的'地址口'的口地址为 70H '数据口'的口地址为 71H 读取时只需将读的CMOSRAM的地址送到70H,随后就可以从71 H中得到所需数据。

(1)读取CMOS数据 进入Debug
-A 100
****:*100 MOV BX,1000
****:**** MOV CX,0040
****:**** MOV AX,0000
****:0109 MOV DX,CX
****:**** MOV CX,0005
****:010E LOOP 010E
****:**** OUT 70,AL
****:**** MOV CX,0005
****:0115 LOOP 0115
****:**** IN AL,71
****:**** MOV [BX],AL
****:**** CMP AH,0E
****:**** JB 0123
****:**** ADD AH,80
****:0123 INC AH
****:**** INC BX
****:**** MOV CX,DX
****:**** MOV AL,AH
****:**** LOOP 0109
****:**** MOV AH,3C
****:**** MOV DX,0150
****:**** MOV CX,0020
****:**** INT 21
****:**** MOV BX,AX
****:**** MOV DX,1000
****:**** MOV CX,0040
****:**** MOV AH,40
****:**** INT 21
****:**** MOV AH,4C
****:**** INT 21
-A 150
****:0150 DB "CMOS.DAT",0
****:0159
-R CX
CX 0000
:60
-N SAVE CMOS.COM
-W
-Q
-W 100 2 0 1
-Q

(2)恢复CMOS数据 进入Debug
-A 100
****:*100 MOV CX,0150
****:**** MOV AH,3D
****:**** MOV AL,00
****:**** INT 21
****:**** MOV DX,1000
****:**** MOV BX,AX
****:**** MOV CX,0040
****:**** MOV AH,3F
****:**** INT 21
****:**** MOV AX,0000
****:**** MOV BX,DX
****:**** MOV DX,CX
****:**** MOV CX,0005
****:**** LOOP 011F
****:**** MOV AL,AH
****:**** OUT 70,AL
****:**** MOV CX,0005
****:**** LOOP 0128
****:**** MOV AL,[BX]
****:**** OUT 71,AL
****:**** JB 0136
****:**** ADD AH,80
****:**** INC AH
****:**** INC BX
****:**** MOV CX,DX
****:**** LOOP 011A
****:**** MOV AX,0040
****:**** MOV DS,AX
****:**** MOV AX,1234
****:**** MOV [0072],AX
****:**** JMP FFFF:0000
-A 150
****:0150 DB "CMOS.DAT",0
****:0159
-R CX
CX 0000
:60
-N WRITE CMOS.COM
-W
-Q

6. DOS 引导扇区数据的保存与恢复

DOS引导程序是被读到内存0000:7C00初开始执行的
获得正常的引导程序
进入Debug
-L 100 2 0 1
-N A:DOSBOOT.COM
-R CX
:200
-W
-Q

装入引导程序
进入Debug
-N A:DOSBOOT.COM
-L
-R CX
:200
-W 100 2 0 1
-Q

7. 硬盘主引导扇区数据的保存与恢复

硬盘工作正常时读取主引导扇区信息
注意:当分区改变时不能用此数据恢复
保存主引导扇区数据进入Debug
-A 100
MOV AX,0201
MOV BX,0110
MOV CX,0001
MOV DX,0080
INT 13
INT 3
-G=100
-E 102 3
-E 10E C3
-R BX
BX 0110
:0
-R CX
CX 0001
:210
-N A:RBOOT.COM
-W
-Q

恢复主引导扇区数据:只需运行A盘的RBOOT.COM

8. 硬盘非分配表备份与恢复

计算机运行正常时分配表备份
进入Debug
-L 100 2 0 1
-N A:DBRUP.DAT
-R CX
:200
-W

恢复
进入Debug
-N A:DBRUP.DAT
-L
-W 100 2 0 1
-Q

9. 硬盘保护卡内幕

对于经常在外边上机的人来说,计算机维护人员一旦设置硬盘保护卡,自己作一些事来特别麻烦,想不想屏蔽掉硬盘保护卡,用以下方法或许可以借鉴:
进入Debug
-A 100
MOV AH,0
MOV DL,0
INT 13
-T
一直按T知道找到 CS=F000 记下此时 DS 的值 如:1234
-E E0:4C
34 12 00 F0
-Q

10. 用Debuf作硬盘低级格式化

硬盘低级格式化一般用DM,但Debug也可以低级格式化硬盘
进入Debug
-A 100
MOV AX,500
MOV BX,180
MOV CX,0
MOV DX,80
INT 13
INT 3
-E 180 0 0 0 2
-Q

11. 冷启动与热启动

用Debug实现系统冷启动与热启动程序

冷启动:
-A 100
JMP FFFF:0
INT 20
-N A:RESET.COM
-R CX
:0007
-w
-Q

热启动:
-A 100
MOV AX,0040
MOV DS,AX
MOV AX,1234
MOV SI,0072
MOV (SI),AX
JMP FFFF:0
-N A:RSET.COM
-R CX
:0014
-W
-Q

12. DOS内部命令加密

如加密 dir
用pctools或diskedit找 C:下的COMMAND.COM文件
编辑该文件
PCTOOLS中:F-----F1 然后找所有03 44 49 52 找到后按F5修改成你所要的值 如: foo 以后只有输入foo 才能列出文件或文件目录。
diskfix 有良好的界面,操作起来和pctools差不多。
注意:如果不能修改,则解开文件的锁定 luck
其它命令代码
type 04 54 59 50 45
cd 02 43 44
del 03 44 45 44
copy 04 43 49 50 59

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

热心网友 时间:2022-04-09 15:46

debug是用来调试程序的
1. 非物理0磁道坏软盘的修复

此种损坏从软盘盘面上来看并没有明显的划伤和霉变。一般可以恢复其数据,也可是软盘重新在利用。
处理方法如下:
Ⅰ. 进入debug
Ⅱ. 取一张引导区没有损坏的好磁盘,插入软驱
-L 100 0 0 1
Ⅲ. 插入损坏的磁盘到软驱
-W 100 0 0 1
-Q
注意:好盘与坏盘容量必须相同

2. 物理0磁道坏软盘中的数据读取

对于0磁道损坏的磁盘,一般来说是应该抛弃了,当你也不妨试一试已下方法:
磁化处理:用较强的磁铁在靠近坏磁盘的表面处反复移动,切不可碰到磁盘介质,以免划伤表面,然后在试试格式化。
软盘换面:小心的将磁盘打开,坚磁片与金属芯片分开,方面后再按原来的方法粘在一起即可,在重新格式化。
Diskfix:对于diskfix想必大家都用的比较多了,里面的磁盘修复功能很好用的。能修复大多数磁盘表面错误。
如果能让电脑告诉我们故障发生在什么地方,哪岂不是省时省力可少走很多弯路?其实,只要我们能善用DEBUG诊断卡,一切都会变得相对轻松。
一、DEBUG诊断卡的工作原理(图01,Q7Q-2-1型DEBUG卡)
DEBUG卡是一种可检测电脑故障的测试卡,有PCI和ISA接口两种,以方便在不同型号的主板上使用。当DEBUG卡插入PCI或ISA插槽后,启动电脑时卡上自带的显示屏就会根据启动的进度显示出各种代码。
主板加电后,首先要对CPU进行检测,测试它各个内部寄存器是否正常;接着BIOS将对CPU中其他所有的寄存器进行检测,并判断是否正确;然后是检测和初始化主板的芯片组;接下来检测动态内存的刷新是否正常;然后将屏幕清成黑屏,初始化键盘;接下来检测CMOS接口及电池状况。如果某个设备没有通过测试,系统就会停下来不再继续启动,而这时,DEBUG卡上所显示的代码也就不再变化了。这样,我们通过对照说明书查询代码所对应的硬件,就可较容易地判断出故障大概是出现在哪个部件上。由于DEBUG卡的价格并不高(15元左右),因此它已成为很多DIY爱好者的必备工具之一。
二、实战DEBUG诊断卡的使用
DEBUG卡的使用也很简单,下面针对几种常见的故障代码和大家讨论一下解决问题的方法。需说明的是,目前市场上的主板绝大部分使用的是AWARD BIOS或AMI BIOS,由于目前DEBUG卡实际上是调用了主板BIOS的自检过程,所以主板BIOS程序的不同,DEBUG卡显示的代码也不同,解决问题的方法也不可一概而论。因此我们也将分两个部分讨论。
以下的说明中将选择最常见的故障代码及解决方法,至于其他更详细的代码含义,请读者参考DEBUG卡的说明手册。
1.Award BIOS篇
错误代码:00(FF)
代码含义:主板没有正常自检
解决方法:这种故障较麻烦,原因可能是主板或CPU没有正常工作。一般遇到这种情况,可首先将电脑上除CPU外的所有部件全部取下,并检查主板电压、倍频和外频设置是否正确,然后再对CMOS进行放电处理,再开机检测故障是否排除。如故障依旧,还可将CPU从主板上的插座上取下,仔细清理插座及其周围的灰尘,然后再将CPU安装好,并加以一定的压力,保证CPU与插座接触紧密,再将散热片安装妥当,然后开机测试。如果故障依旧,则建议更换CPU测试。另外,主板BIOS损坏也可造成这种现象,必要时可刷新主板BIOS后再试。

错误代码:01
代码含义:处理器测试
解决方法:说明CPU本身没有通过测试,这时应检查CPU相关设备。如对CPU进行过超频,请将CPU的频率还原至默认频率,并检查CPU电压、外频和倍频是否设置正确。如一切正常故障依旧,则可更换CPU再试。

错误代码:C1至C5
代码含义:内存自检
解决方法:较常见的故障现象,它一般表示系统中的内存存在故障。要解决这类故障,可首先对内存实行除尘、清洁等工作再进行测试。如问题依旧,可尝试用柔软的橡皮擦清洁金手指部分,直到金手指重新出现金属光泽为止,然后清理掉内存槽里的杂物,并检查内存槽内的金属弹片是否有变形、断裂或氧化生锈现象。开机测试后如故障依旧,可更换内存再试。如有多条内存,可使用替换法查找故障所在。

错误代码:0D
代码含义:视频通道测试
解决方法:这也是一种较常见的故障现象,它一般表示显卡检测未通过。这时应检查显卡与主板的连接是否正常,如发现显卡松动等现象,应及时将其重新插入插槽中。如显卡与主板的接触没有问题,则可取下显卡清理其上的灰尘,并清洁显卡的金手指部份,再插到主板上测试。如故障依旧,则可更换显卡测试。
一般系统启动过0D后,就已将显示信号传输至显示器,此时显示器的指示灯变绿,然后DEBUG卡继续跳至31,显示器开始显示自检信息,这时就可通过显示器上的相关信息判断电脑故障了
2.AMI BIOS篇
错误代码:00(或FF)
代码含义:主板没有正常自检
解决方法:(同Award BIOS篇相同故障代码)

错误代码:01
代码含义:处理器寄存器测试
解决方法:(同Award BIOS篇相同故障代码)

错误代码:0D至0F
代码含义:CMOS停开寄存器读/写测试
解决方法:检查CMOS芯片、电池及周围电路部分,可先更换CMOS电池,再用小棉球蘸无水酒精清洗CMOS的引脚及其电路部分,然后看开机检查问题是否解决。

错误代码:12、13、2B、2C、2D、2E、2F、30、31、32、33、34、35、36、37、38、39、3A
代码含义:测试显卡
解决方法:该故障在AMI BIOS中较常见,可检查显卡的视频接口电路、主芯片、显存是否因灰尘过多而无法工作,必要时可更换显卡检查故障是否解决。

错误代码:1A、1B、20、21、22
代码含义:存储器测试
解决方法:同Award BIOS篇内存故障的解决方法。

注意事项:如在BIOS设置中设置为不提示出错,则当遇到非致命性故障时,诊断卡不会停下来显示故障代码,解决方法是在BIOS设置中设置为提示所有错误之后再开机,然后再根据DEBUG代码来诊断。

三、注意DEBUG卡的局限性。
DEBUG卡虽能很直观地指出系统无法启动的故障可能,但工具毕竟是工具,它也并非万能,使用DEBUG卡时也需注意几个方面的问题。
首先,由于DEBUG卡本身的局限性,有时诊断卡所显示出的故障代码并不能反映出电脑的真正故障所在,特别是PCI接口的DEBUG卡。由于PCI的地址线和数据线是共用的,它们通过10个脉冲时间来区分当前信号是地址还是数据,因此就有可能在诊断中产生错误代码。因此DEBUG卡上的错误代码也不可全信。
其次,在DEBUG卡的使用过程中有时会遇到代码无法完全显示的问题,也就是说DEBUG卡显示的代码在进行到某一启动阶段后就一直维持不变。这种故障在使用PCI接口的DEBUG卡上经常发生。对此,可尝试更换PCI插槽或使用ISA插槽来解决(多数DEBUG卡都是PCI和ISA双接口的)。

总之,任何优秀的工具都只能帮助我们去解决问题,而我们则不能对其产生过分的依赖心理。毕竟到最后关头,所有的电脑故障都还是要靠自己的能力去解决的,善于利用工具,锻炼自己的DIY能力,才是我们解决电脑故障的最根本办法。

BUG就是漏洞缺点

热心网友 时间:2022-04-09 20:08

bug 我理解为软件或者操作系统存在的漏洞
debug 是操作系统自带的一个程序。你在MS-DOS下输入debug 回车就进入到debug命令行
debug 的来源:原意是指破坏计算机的程序,因为当年第一太计算机故障时工作人员拆开机器发现了一虫子
呵呵和

热心网友 时间:2022-04-10 00:46

bug,名词,错误,漏洞,问题;
debug,动词,调试(代码),修复(漏洞),排除(故障),解决(问题)。
两个词多用于计算机语言编程等等。

热心网友 时间:2022-04-10 05:40

bug 缺陷 漏洞
debug 排除bug 显示错误信息的工具(功能)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做胚胎移植成功率多少 试管婴儿移植冻囊胚成功率有多高 试管移植冻胚成功率有多大 如何让word的奇数页页眉是文章的标题? 心目中的自己作文400字左右请告告我开头怎么写 封神榜的十二金仙是谁 雅漾的护肤品怎么样? - 知乎 女孩子以馨字取最佳的名字 英语口语练习软件推荐哪款英语学习工具好用 不锈钢保温杯壁有一圈圈的印 c语言中的调试有什么作用 为何程序员大部分时间在debug? 为什么Debug环境中只能用十六进制表示数据,主要原因是什么啊? 初学微机原理 经期喝红酒好吗??? java remote debug 是什么原理 debug怎么用?是直接电脑上就有的程序吗? Bug的定义和原理? VC++6.0里面debug和release有什么差别?要详细解释 喝葡萄酒的好处和坏处? C#中debug是什么意思 debug咋学阿? Visual Studio Debug下的Attach Process是什么原理 电脑诊断卡显示的表示什么问题 visualC++中的debug应该怎么用啊? Debug卡是什么 DEBUG是什么 有什么用处啊 debug做什么用的 宋代文学家大苏,小苏,老苏的世称是什么 小苏肉怎样做 小苏抽起来怎么样啊,多少钱一包?? 经期能喝红酒吗?对身体有什么好处或坏处? 微机原理debug程序调试实验:显示256个ascii码字符 喝葡萄酒对人体有什么好处和坏处,邦巴国际贸易红酒如何 WIN10怎么打开debug? 喝红葡萄酒有什么好处和坏处谢谢了,大神帮忙啊 Eclipse的调试机制是什么样的,原理是什么? 有些股票投资者无法控制频繁交易的根本原因是什么? 为什么下载完抖音安装不了,提示内存不足,但内存还有很多,其他应用却可以下载? 抖音下载完成后安装需要网吗 抖音号下完单以后又改自己的账号影响收货吗 我的抖音下载完了为什么找不到了 抖音下载的app安装不了如何解决 下载抖音17.7为什么下载完是19.0 为什么抖音下载了会闪退 康熙微服出访记主题曲五花马什么意思 请问大佬有康熙微服私访记32000年上映的由张国立主演的百度网盘资源吗 中秋节的习俗 英文版50词 抖音下载安装? 狮子 王微服务是在手机还是qq? 抖音里的美团优选下完单怎么就找不到了