delphi的调试问题与技巧

初级教程之---delphi调试 一、准备调试       Delphi 在 IDE 内部集成了一个调试器,因而对程序的调试不用离开集成开发环境(IDE)就可以进行。该调试器能够控制程序的运行、监视程序的输出、检查和修改变量的值。 在调试程序之前,必须保证程序代码已经没有语法错误,还要正确设置一些选项。为此,需要使用【Project】菜单中的【Options】命令打开【Project  Options】对话框。 打开【C 阅读详情

[独孤求败]:第十二章 Delphi异常处理与程序调试(三) [原创 2006-06-23 16:09:45 ] 发表者: mingliangjian   

http://mingliangjian.blog.hexun.com/4294529_d.html
12.4.3 断点的使用 

12.4.3.1 设置断点 

  设置断点首先在Code Editor中选定你想设置断点的代码行,而后进行如下的任一种操作:

  ● 单击选定代码行左边的空白

  ● 按F5

  ● 选择Code Editor加速菜单的Toggle BreakPoint项

  ● 选择Run|Add Breadpoint打开断点编辑对话框(Edit BreakPoint Dialog Box),而后选择New去确认一个新的断点设置或选择Modify去对一个存在的断点进行修改

  ● 从BreakPoint List加速菜单中选择Add BreakPoint项 

  断点必须位于可执行代码行上,凡设置在注释、空白行、变量说明上的都是无效的。另外,断点既可以在设计状态下设置也可以在运行调试状态下设置。 

12.4.3.2 断点的操作 

  断点列表窗口(BreakPoint List Window)列出了所有断点所在的源文件名、行号、条件以及已通过的次数。如果一个断点非法或失去功能,则在列表窗口中变灰。

  断点列表窗口可以通过选择View|BreakPoint菜单打开。

断点列表窗口是断点操作的基础。

  1.显示和编辑断点处的代码

  利用断点列表窗口可以快速找到断点在源代码中的位置。

  首先选定断点而后从加速菜单中选择View Source或Edit Source。此时Code Editor更新,显示该断点位置处的代码。如果选择的是View Source,则断点列表窗口仍保持活动;如果选择的是Edit Source,则Code Editor获得输入焦点,可以在断点位置修改源代码。

  2.断点功能的丧失和恢复

  使断点失去功能可以使断点从当前程序运行中隐藏起来。假如你定义了一个断点当前并不需要,但可能在以后使用,则这一功能是很有用的。

  断点列表窗口加速菜单的Disable BreakPoint和Disable All BreakPoints项可以使当前选中断点或所有断点失去功能。

  加速菜单中的Enable BreakPoint和Enable All BreakPoint 可以使相应断点恢复功能。

  3.断点的删除

  断点删除可以从Code Editor或断点列表窗口中进行。

  从Code Editor:

  ● 把光标停到包含断点的行并按F5(或选择加速菜单的Toggle BreakPoint)

  ● 单击包含断点行左边的终止符 

  从断点列表窗口:

  ● 选中欲删除的断点并选择加速菜单的Delete BreakPoint项

  ● 删除当前所有断点,则选择加速菜单的Delete All BreakPoints项 

12.4.3.3 修改断点属性 

  断点列表窗口双击选定断点或从加速菜单中选择Edit BreakPoint项,可以打开断点编辑对话框,用于显示和修改断点的属性。

利用断点编辑对话框可以改变断点的位置,设置断点条件。

  断点条件包括两种:布尔表示式和通过次数。

  Condition编辑框用于设置布尔表达式条件。如果表达式值为真(或非零)则程序运行在断点处中止;否则调试器将忽略该断点。

  Pass Count编辑框用于设置通过次数条件,即只有当程序运行在该断点处通过设定次数时程序运行才在该断点处中止。这往往用于对循环体内语句的调试。

  有一点应引起注意的是:当Condition和Pass Count同时设置时,Pass Count是指满足条件的通过次数。

  对如下一段程序: 

var

i,Re,s: Integer ;

begin

s := 1;

Re := 0;

for i:=1 to 100 do

Re:=Re+s*i ;

end; 

在 Re := Re + s*i; 一行设置一断点。

若条件设置为: 

  Condition :  i = 3

Pass Count:   4

  则当程序中止时检测i 的值为7。 

12.4.3.4 断点和程序执行点颜色的设置 

  选择Option|Environment进入环境设置对话框而后选择Editor Colors页标签。此时即可对有关项按自己的希望设置背景和前景色。 

12.4.4 监视数据的值 

  内置调试器提供了如下的工具用于监视程序中数据的值:

  ● 监视列表窗口

  ● 计算/修改对话框

  ● 调栈窗口 

12.4.4.1 监视表达式 

  监视列表窗口(Watch List Window)显示程序运行中当前监视表达式的值。

  选择View|Watches可以打开监视列表窗口。

从Code Editor中添加一个监视表达式最方便的方法是:

  1.选中要监视的表达式;

  2.从Code Editor加速菜单中选择Add Watch把表达式添加到监视列表窗口。

  也可以利用下面的方法产生一个监视表达式:

  1.用下列方法之一打开监视属性对话框(Watch Properties Dialog Box):

●主菜单中选择Run|Add Watch

●在光标处从Code Editor加速菜单中选择Add Watch

  ●按Ctrl-F5

  ●双击监视列表窗口中的一个监视表达式

  ●从监视列表窗口选定一个表达式而后从加速菜单中选择Edit

  2.在监视属性对话框的Expression下拉列表框中输入或选择一个被监视的表达式;

  3.设定表达式的显示格式和使能状态。

  与断点类似,利用加速菜单也可以使监视表达式功能丧失、恢复或删除监视表达式。 

12.4.4.2 计算/修改表达式 

 选择Run|Evaluate /Modify可打开计算/修改对话框。当单击Evaluate按钮时,Expression编辑框中表达式的值显示在Result域中。

  Expression中可以输入或选择任何合法的表达式(包括对象的属性),但不包括;

  1.包含有当前执行点不能引用的局部或静态变量的表达式;

  2.函数或过程调用。

  Expression中的表达式可以带特定的格式字符用于规定其显示格式。 格式字符及其功能如下表。 

   表12.8  格式字符及其功能

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

格式字符 功 能

─────────────────────────────────

$,H,X 以十六进制格式显示标量

D 以十进制格式显示标量

C 把ASCII码在0..31的特殊字等显示为ASCII码图形

Fn 用n个有效数字显示浮点数

M 以十六进制方式显示一变量的内存转储值

P 以段和偏移量格式显示指针。两部分皆为四位十六进制值

R 显示记录、对象的域名和值(例如 X:5,Y:2)

S 用ASCII码显示字符串(包括特殊字符)。用于修改内存转储值

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  修改表达式的值常用于验证错误解决方案的正确性。在Expression编辑框中输入或选定欲修改的表达式,单击Evaluate按钮观察表达式的当前值。而后在New Value编辑框中输入或选中一个新值,并单击Modify按钮确认并更新数据项。这种修改只影响特定的程序运行。

  修改表达式的值(特别是指针变量和数组下标)可能会引起无法预计的后果。因而使用中要特别小心。 

12.4.4.3 显示函数调用 

  选择View|Call Stack可以显示调栈窗口(Call Stack Window)。调栈窗口的顶端列出了应用程序最近的函数调用。

利用调栈窗口可以退出当前跟踪的函数,可以利用加速菜单项显示或编辑位于特定函数调用处的源代码

12.5 其它调试工具 

  Delphi的内置调试器虽然功能很强大,但并不能胜任所有的任务。同时由于内置调试器在执行中引起程序环境的细微变化,所以可能影响错误的发生方式。为此我们需要使用其它调试工具来完成我们的任务。这些调试工具包括Turbo Debugger、WinSight、WinSpector和Browser。Browser将在下一节中专门进行介绍。 

12.5.1 Turbo Debugger 

Turbo Debugger是Borland公司推出的第三代语言调试器,它虽然还没有推出完全支持Delphi的新版本,但也基本能胜任一般Delphi程序的调试。

  Turbo Debugger在字符模式下执行,但它是一个真正的Windows程序,它仅使用基于字符的界面。由于Turbo Debugger是一个准备控制其它程序的特殊程序,因此不可以使用通常Windows任务切换功能如Alt+Tab。

Turbo Debugger的操作大部分与内置调试器相同或类似。利用File|Open菜单装入要调试的文件就可以开始一个调试过程。

  利用Turbo Debugger必须把调试符号信息储存在可执行文件中。具体操作见(12. 4.1.1)中介绍。

  Turbo Debugger与内置调试器相比,有许多新的功能。

  首先它提供了许多在低级硬件信息方面的控制。可以完全访问CPU的寄存器、标志及系统内存。用户可以跟踪远指针到内存位置并直接检查它们的内容。Turbo Debugger可以跟踪进到代码中,即使得不到源代码也可以。

  Turbo Debugger支持许多Windows的特殊功能。它可以跟踪Windows消息,让用户查看程序的局部堆和全局堆,并可以浏览包括DLLs在内的组成程序的所有代码单元列表。

  另外Turbo Debugger支持远程执行能力。可以通过串口链接或通过支持NetBIOS的网络配置Turbo Debugger控制另外一台机器。在这种模式下,一台机器显示调试器屏幕,另一台机器显示被跟踪的程序。这允许在一个屏上单步执行程序并在另一屏上监视结果。 

12.5.2 WinSight

  WinSight 是一个用于查看Windows 对象并跟踪消息的发送和接收的调试工具。WinSight的图标可以在Delphi程序组中找到。

WinSight界面分为两部分,上面为对象树窗口,下面为消息跟踪窗口。如图12.9所示。

  在实际应用中,用户可能只是对其中的一部分消息感兴趣,而又不希望它们淹灭在无用信息之中。为此,用户可以打开Message菜单并选择Selected Windows。按住Shift键,单击对象树窗口中感兴趣的对象,所选定对象的任何消息都显示在消息跟踪窗口中。

  如果用户只想跟踪某些消息类,则打开Message菜单并选择Options ,使用如图12.10所示的检查框过滤消息。 

12.6.6 小结 

  本章介绍的内容,核心是如何增强程序的健壮性并提高开发效率。为此我们首先考察了Delphi的异常处理机制,而后介绍了几种程序调试工具,在您即将结束基础篇的学习时,这些内容是您步入开发大型应用程序的高级程序员行列的必备武器。 

 

 

一本名为

Delphi程序调试参考手册

的书,似乎是唯一一本专门讲delphi调试的书


作者:[美]夏农 著,王晓云,林琪 译
定价:58.00
ISBN:7508314824
出版社:中国电力出版社
出版时间:2003-09
装帧:平装
开本:16
页数:464
本书的标签:

Delphi中avicap32.dll的使用指南 avicap32.dll是Windows操作系统中用于视频捕获和处理的动态链接库(DLL),它允许程序员通过应用程序编程接口(API)访问计算机上的视频输入设备,如摄像头和视频卡。开发者使用avicap32.dll可以较为方便地将视频捕获功能集成到自己的软件产品中,为用户提供实时视频流的处理和显示。为了确保avicap32.dll在视频捕获中的应用顺利,程序员需要了解其详细的函数声明和使用方法。这通常涉及调用一系列的函数,如用于创建视频捕获窗口,获取视频驱动程序信息等。 阅读详情

相关推荐

Delphi 调试技巧

Delphi7 调试技巧 包含如何查找Error 各种快捷键、特别常用的依据个人经验特别注明

delphi debug技巧

Delphi开发的调试技巧1、设置调试选项  Delphi主菜单。【Project】->【Options】,或单击工程管理器中的【ProjectOptions】按钮。显示ProjectOptions,选择Complier  <1>选中DebugInformation:把调试信息嵌入到DCU单元文件,会加大编译后的DCU文件,但不会影响最后生成的exe的大小和执...

aldsot0997的博客 830

基于Ultralytic实现多路摄像头目标检测

基于Ultralytic实现多路摄像头目标检测前面的文章分享了单路摄像头画面的YOLO目标检测,这篇文章主要分享一下多路摄像头画面的实时YOLO目标检测。测试环境在Windows系统下进行。

qq_57674776的博客 939

Delphi应用程序的调试(四)The Debug Inspector

调试检查器(The Debug Inspector) Debug Inspector使用户能查看诸如类和记录的数据对象,也可以用它来查看整数、字符数组等简单数据类型,但这类简单数据类型最好是用Watch List查看。Debug Inspector最大用途是用于查看类和记录。 Note 只有在调试器下运行的程序暂停执行时,才能使用Debug Inspector。 要查看一个对象...

weixin_34273479的博客 207

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3164

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

delphi程序调试

delphi程序调试 错误种类 使用断点 设置程序的执行方式 监视变量和相关数据的值 1、错误的种类 编写程序时所出现的错误一般分为三种:语法错误(Syntax Error)、运行时期错误(Run-Time Error)和逻辑错误(Logic Error)。这些错误都可以通过Delphi开发环境所提供的强大的集成调试器(Integrated Debugger)来找出并修正。 1....

数据库天地 207

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

Delphi10.3 进入Debug方式

buildconfigurations选debug,然后saveall,再build,然后运行Run

mengzhongren2的专栏 1152

【华为OD机考真题】- 构成的正方形数量(B卷-100分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 1349

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

前程算法屋的博客 851

delphi编程环境技巧集锦

[本篇全文] [回复本文] [本篇作者: Rainie] [本篇人气: 1]发信人: Rainie (Nothing Serious), 信区: Borland标  题: delphi编程环境技巧集锦发信站: 饮水思源 (2004年08月11日23:09:05 星期三), 站内信件全文较长,请耐心观看。原文URLhttp://members.lycos.co.uk/zhanshan2002/d

§为艺术而技术§ 3255

Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)

by fanxiushu 2019-06-24 转载或引用请注明原始作者。 这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。 这篇文章与之前发布的...

fanxiushu的专栏 2万+

Delphi在调试的时候查看变量的值

Delphi调试概述 除非你的程序只有几行,否则几乎不可能一次写成,因此调试就非常必要。然而许多初学者不知道如何进行调试,写完程序就运行,发现结果不对再看代码,这样觉得非常吃力。这里,简单介绍一下Delphi所提供的调试功能。 1. 语法检查(Syntax Check) Delphi提供了语法检查的功能,这个功能和正常编译很相似,同样也会给出各类错误和警告信息,但是不会生

slj_win的专栏 6298

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

delphi调试

delphi调试 转载于:https://www.cnblogs.com/LoveFishC/p/3845922.html

weixin_34362991的博客 105

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

DELPHI编程技巧集锦

<!-- @page { margin: 2cm } H1 { margin-top: 0.6cm; margin-bottom: 0.58cm; line-height: 200%; page-break-inside: avoid } H1.western { font-family: "DejaVu Serif", serif; fo...

weixin_33735077的博客 383

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Delphi的内存管理及内存泄露问题

这几天因为一个程序长时间运行出现比较严重的内存泄露问题,开始关注了一下内存管理方面的东西,以前也注意内存管理,创建了对象及时释放,但总有忘了处理的情况。 在Delphi中没有自动回收机制,所以一定要及时释放使用的内存,虽然有时小的内存泄露并不会造成太大的问题。 Delphi中检测内存泄露可以使用开源的FastMM(http://sourceforge.net/projects/fastmm/)...

qq_18932003的博客 1952

关于Delphi赋值的问题

  平时我不太在意使用 := 来进行赋值。   有次,在做一个程序测试的时候,请一个朋友提供帮助,他告诉我,程序最大的问题是出现在:   采用 := 方式来进行赋值。最后的结论是我的基础不行。   呵呵~我一向很谦虚。   后来我不断地看代码,一行行地看,希望找出这些采用:= 有啥问题。   因为我很明白,也许我把某个内存地址弄错了,但是绝不会是我的基础不行。   因为...

arzzsc1461的博客 298

Delphi Web Service(2)

用delphi的THTTPRIO控件调用了c#写的webservice。 下面是我调试时遇到的一些问题: 1,导入wsdl文件:file--new----other----wenservice---WSDLimporter---输入wsdl地址:如下:http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?

流年~~ 1678

BPL包无法调试的问题

    由于系统结构是Host主程序动态加载BPL包的模式。所以用到了Package的调试,但无论如何有一个包就是无法调试(加断点不起作用)。经过N久的查找,发现:    1.包Package在编译,生成的时候会自动产生DCP和BPL文件,缺省产生到Delphi/Projects/BPL下。    2.BPL文件的生成路径可以在Project/Options/Directories中修改    3

yuso的专栏 702

Debugging Multithreaded Applications with Delphi

http://edn.embarcadero.com/article/41175 Delphi versions: 2009 and above Primož Gabrijelčič From the December 2010 issue of Blaise Pascal Magazine In the first four instalments of this series I’

l799623787的专栏 1216

解决90%的常见问题:CEF4Delphi开发者必备调试指南

CEF4Delphi是一个开源项目,用于在Delphi或Lazarus/FPC开发的Windows、Linux和MacOS应用程序中嵌入基于Chromium的浏览器。对于开发者而言,掌握高效的调试技巧能显著提升开发效率,本文将分享CEF4Delphi开发中常见问题的调试方法和实用技巧。 ## 一、环境配置检查:快速定位基础问题 在开始调试前,确保开发环境配置正确是解决问题的第一步。CEF4De

gitblog_00680的博客 455

Delphi中一些小问题点

1、在求一个字符在汉字中出现的位置从而想获得字符后面的汉字时,需要注意这里不能用leftstr/rightstr操作 而应该用leftbstr/rightbstr eg: iIndex:=Pos('[',vTermStr);if iIndex>0 then vTermStr:=RightBStr(vTermStr,Length(vTermStr)-iIndex); ...

weixin_30832351的博客 154
上一篇: Tomcat的一些配置的实现
下一篇: Delphi Tips and Articles 3
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值