热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

BorlandDelphi:我该如何调试这个程序?

如何解决《BorlandDelphi:我该如何调试这个程序?》经验,为你挑选了1个好方法。



1> Rob Kennedy..:

Delphi附带一个集成的调试器.你应该使用它.以下是如何开始调查程序似乎挂起的情况.

    使用"播放"按钮在调试器的控制下启动程序.

    重现您正在尝试调查的情况.

    程序挂起时,切换到调试器并按"暂停"按钮.调试器将中断程序的执行,以便您可以调查当前状态.

    看看调用堆栈.(如果调用堆栈窗口尚未显示,则可以使用IDE中的"调试窗口"菜单选项显示它.)

    调用堆栈将显示程序调用的函数列表.堆栈顶部将是您暂停时程序运行的功能.它下面的函数将是调用当前函数的函数,依此类推,直到到达堆栈的底部,这表示程序的主要功能.

    你停下来的功能可能不是你写的.相反,它通常是由操作系统或Delphi运行时库提供的功能.你不想调试那些.通常,您可以假设它们已经正常工作.你在寻找一个错误代码来代替.

    使用"run until return"命令让最顶层的功能继续运行.重复此操作,直到到达调用堆栈上的某个函数.那可能是罪魁祸首.

现在您已经确定了有问题的功能,现在是时候进一步调查了.

    使用"step over"调试器命令逐个运行函数的每一行.(还有一个"步入"命令,但这将进入不属于你的功能,你现在对这些功能不感兴趣.)

    观察代码中变量的当前值.您可以将鼠标悬停在变量上以让调试器在工具提示中显示其值,或者您可以使用"监视"调试窗口一次显示多个变量.它们将在您的程序中的每个步骤后更新.

    注意变量的值.你应该已经对他们的价值观在你的计划过程中如何取得进展有所期待.在编写代码时,您可能已经考虑过这种进展.回想那段时间,将您在调试器中观察到的结果与之前的预期进行比较.他们匹配吗?如果是这样,那么继续单步执行代码.但是,如果它们不匹配,那么你就发现了一个错误.修理它.

    另一个意外行为的来源是在您的程序中达到您不希望达到的某个点.也许程序调用了一个它不应该具有的功能,或者你可能已经执行过多次你想要的循环.如果你能找出原因,那么修复bug.否则,您可能需要备份一些方法.

    在您观察到意外行为的位置之前,确定程序中的某个点.查找代码编辑器左边距中的蓝点.这些点表示可以设置断点的位置.单击其中一个点,您应该注意到该行突出显示(可能为红色).

    终止您的程序,然后再次运行它.

    这次,您应该看到调试器程序出现挂起之前停止,因为执行将首先到达断点.调试器会中断您的程序.

    像以前一样逐步执行代码行,并观察导致程序转向预期执行路径的条件.当您确定错误后,请修复它.


推荐阅读
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • GIMP 2.99.2 发布:UI 采用 GTK3 实现、原生支持高分屏和 Wayland
    开源项目评选最后一周,手里的5票再不用就没用了https:www.oschina.netprojecttop_cn_2020GIMP2.99.2已发布,同时这也标志着GIMP3.0的到来,其中最显著的变化是从GTK2过渡到GTK3工具包。基于 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
author-avatar
秋静222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有