标签:#调试

共 19 篇文章

调试

-{zh-cn:调试; zh-tw:除錯或偵錯;}-()是发现和减少计算机程序、软件或软体系统中程序错误的一个过程。 调试包括互动式调试、控制流程分析、单元测试、集成测试、日志文件分析、在应用程序或系统监视器的监控、内存转储以及性能分析。许多编程语言和软件开发工具还提供了用于辅助调试的程序,称为调试工具。 偵錯的基本步骤 发现程序错误的存在。 以隔离、消除的方式对错误进行定位。 确定错误产生的原因。 提出纠正错误的解决办法。 对程序错误…

海森堡bug

在程序设计术语中,海森堡bug()是指在尝试研究它时似乎会消失或者改变行为的bug(程序错误)。该词汇是关于物理学家维尔纳·海森堡名字的双关语,他最先断言了量子力学的观察者效应——观察系统的行为将不可避免地将改变其状态。电子学中的传统用语则是,指连接一个到设备将改变其行为。 类似的词语有玻尔bug(bohrbug)、曼德博bug(mandelbug)和薛定谔bug(schrödinbug),它们偶尔被用于指代其他类型的非寻常软件缺陷,但…

小黄鸭调试法

的小黄鸭]] 小黄鸭调试法,又称橡皮鸭调试法、黄鸭除虫法()是可在软件工程中使用的一种-{zh-cn:调试代码;zh-tw:程式碼除错;}-的方法。方法就是在程序的调试或测试过程中,操作人耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾。 名称由来 此概念是参照于一个故事。故事中程序大师随身携带一只小黄鸭,在-{zh-cn:调试代码;zh-tw:程式碼除錯;}-的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码。 许…

薩頓定律

薩頓定律(Sutton's law)描述在醫學診斷時,先考慮較明顯、較可能確認的項目。因此應該針對最可能確認的項目進行測試。在醫學院中會教導學生調整給病人的檢查項目,讓一些比較簡單或可以快速檢查的檢查先進行,避免不必要的開支。在藥學上,當選擇藥物來治療疾病時,也有類似的觀點。薩頓定律也可以用於工程診斷,像是電腦程式的除錯等。可以提供統計上及量化的資訊。 更深入的分析會考慮偽陽性的比率,以及一些較不常進行的診斷出現較嚴重結果的機率。另一個…

不可遮罩式中斷

在計算領域,不可遮罩式中斷( 英語:non-maskable interrupt, NMI )是指無法以系統中的標準中斷遮罩來忽略的硬體中斷。通常用於提醒使用者注意無法復原的硬體錯誤。某些NMI也可被遮罩,但只能使用針對特定NMI的專用方法。至於SPARC架構,雖然不可遮罩式中斷(NMI)是優先程度最高的中斷,但還是可以由中斷遮罩來防止其發生。 不可遮罩式中斷(NMI)通常用於回應時間非常重要,或是系統正常運作時永遠不應停用的情況。例如…

調試模式

调试菜单或调试模式是计算机程序中的一个用户界面,它允许開發者在软件开发和软件测试時查看程序的内部状态並運行,以达到调试的目的。調試模式一般處於隱藏狀態,终端用户難以發現。 与普通的用户界面相比,调试菜单通常未经修饰,不方便用户使用,基本上只是软件的开发人员在使用调试菜单。開發人員可以通過调试菜单进行破坏性操作,如在程序没有警告的情况下删除数据。

Wild branch

Wild branch是電腦程式中的一個名詞,是指分支跳躍指令的目的位址不是有效的程式進入點,這常常是因為程序錯誤,指標陣列index被破壞的結果。之所以用Wild這個形容詞來形容,也是因為其結果難以預測。 Wild branch的影響不容易預測,產生的錯誤可能會依條件而不同:目的位址是否存在、目的位址是否恰好有有效的程式碼。Wild branch發生後,不一定會立刻偵測到,偵測到時,可能一些執行相關的證據已被破壞,或是已在目的位址執行…

反汇编器

反汇编器(disassembler)是一种将机器语言转换为汇编语言的计算机程序——这与汇编器的目的相反。反汇编器与反编译器不同,反编译器的目标是高级语言而非汇编语言。反汇编器的反汇编输出通常格式化为适合人类阅读,而非用作汇编器的输入源,因此它主要是一个逆向工程工具。 汇编语言源代码通常允许使用常量和程序员注释,而这些通常会在汇编器汇编的机器语言中被移除。因此,以机器代码为基础完成的反汇编结果将没有这些常量和注释,阅读输出结果将比阅读源代…

栈追踪

在计算机科学领域,栈追踪()是对程序运行过程中的某个时间点上活跃信息的描述。栈追踪也称堆疊回溯(英语: 或 )。 程序员通常在交互式调试或者事发后调试中使用栈追踪。最终用户则可能在中看到栈追踪,并且可以选择将其反馈给程序员。 语言支持 包括Java和C#在内的很多编程语言都内置相关支持,可以通过系统调用获取当前的栈追踪。C++没有内置此类功能,不过C++用户可以通过第三方库获取栈追踪。JavaScript的异常中有stack属性,包含了…

斷言 (程式)

在程式設計中,斷言(assertion)是一種放在程式中的一階邏輯(如一個結果為真或是假的邏輯判斷式),目的是為了標示與驗證程式開發者預期的結果-當程式執行到斷言的位置時,對應的斷言應該為真。若斷言不為真時,程式會中止執行,並給出錯誤訊息。 例如,以下的程式包括二個斷言: x := 5; {x > 0} x := x + 1 {x > 1} x > 0及x > 1,當程式執行到二個斷言對應的位置時,斷言的內容均為真。 程式設計者可以用斷…

热修复

热修复(也称热补丁、热修复补丁,)是一种包含信息的独立的累积更新包,通常是一个或多个文件。热修复用来解决软件产品的问题(比如说一个程序错误)。通常情况下,热修复制作的目的是为了解决特定用户的具体问题。 术语“hotfix”原指“热应用”到系统的软件补丁。热修复会将补丁应用到正在处于生产状态(而不是开发状态)的系统。对于开发者来说,热修复可以使对系统的改动更加快速,并且可以安排在正常开发和测试流程以外,如果不使用热补丁,可能会增加修复成本…

验证器

验证器是一类计算机程序,用于检查代码片段、文档的有效性或句法正确性。这个术语通常用于HTML、CSS、XML文档或RSS订阅的验证。当然,其他格式或语言也可以使用相应的验证器。 网站亲和力验证器是一类为了核查网页或网站对无障碍准则(比如WCAG、,还有与国家法律相关的准则,比如)的遵守程度而设计的自动化工具。 相关主题 HTML Tidy W3C驗証服務 XML validation 参考文献 外部链接 W3C的[https://val…

断点

斷點()是程序中为了调试而故意停止或者暂停的地方。 除錯設定斷點可以讓程式執行到該行程式時停住,藉此觀察程式到斷點位置時,其變數、暫存器、I/O等相關的變數內容,有助于深入了解程式运作的机制,发现、排除程序错误的根源。 触发条件 由程序员指定一条指令,让程序在执行这条指令前暂停:这样的断点最为常见,叫做「指令断点」。 读取或者修改某个主存储器地址时也可以触发断点,这类断点由运行时的数据触发,有「条件断点」「数据断点」「观察点()」等很多…

弱符号

弱符号(Weak symbol)是链接器在生成ELF文件的过程中使用的一种特殊属性符号。默认情况下,如果没有特别声明,目标文件里面的符号都是强符号。在链接过程中,一个强符号会优先于一个同名的弱符号。相比之下,两个同名强符号一起链接会出现链接错误。当链接一个可执行文件,弱符号可以不定义。但对于强符号,如果没有定义,连接器会产生一个“符号未定义”错误 (undefined symbol)。使用弱符号的目的是,当不确定这个符号是否被定义的情况…

详细模式

在计算中,详细模式(Verbose mode)是许多计算机操作系统和编程语言中的一个选项,它可以提供额外的细节,如计算机正在做什么,在啟動過程中加载了哪些驱动程序和軟體,或者在编程時,它可以输出详细內容以用於診斷,从而使程序更容易調試。 许多命令行程序(例如cURL)可以透過一個標誌,如-v或--verbose来设置成verbose模式。 参考

核心转储

核心文件(core file),也称磁芯傾印(core dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息寫入一个磁盘文件。这种信息往往用于调试。 背景 核心文件一词来源于磁芯内存(core memory),1950-1970年代的主要的随机存取存储介质。 使用 核心文件通常在系统收到特定的信号时由操作系统生成。信号可以由程序执行过程中的异常触发,也可以由外部程序发送。动作的结果一般…

十六进制转储

的维基百科图标的十六进制转储]] 在电脑运算领域,十六进制转储(英文:Hex dump)是指从内存或其他存储设备中调取的数据的十六进制视图(该视图被打印在屏幕上或者纸上)。在调试软件及进行反向工程时,操作者经常需要查阅十六进制转储。 在十六进制转储中,每个字节被两位十六进制数字代表。十六进制转储在显示时通常被排列成8或16字节的列,有时用空格隔开。一些十六进制转储工具在行首提供十六进制的内存地址,有些则在行尾提供检验值。 虽然十六进制转…

花指令

花指令是一种防止程序被反汇编、调试的手段。 种类 跳转到多字长指令的参数中 一般来说,反汇编器会按顺序进行反汇编,但是,如果程序跳转到多字长指令的参数中,反汇编的结果就会和实际情况不符。 这个例子过于简单,是可以被调试器检测到的。实际应用的花指令比这个更复杂,含有条件跳转指令。 参见 *代码混淆

PREFast for Drivers

PREfast(Prefast.exe)是微軟公司為驅動程式設計所提供的靜態的原始碼分析工具(static source code analysis tool),可偵測原始程式碼中不易用一般編譯器找到的特定類型錯誤,與Windows DDK建置環境一同安裝。目前已整合至Visual Studio 2005 Team Suite中,使用時只要設定‘Enable Code Analysis For C/C++’為『Yes』即可,接下來PRE…