首页 > 其他分享 >delphi初级教程之delphi断点调试一

delphi初级教程之delphi断点调试一

时间:2024-08-27 14:05:39浏览次数:12  
标签:delphi Add 初级教程 设置 Breakpoint 用于 源代码 断点

所谓断点,就是在程序代码的某一行上设置一个标记,程序执行到这里将暂停,由调 试器接管对程序的控制。使用断点与使用【Runto Cursor】命令有些相似,都是执行到某 一行后暂停。不同的是,程序中可以设置多个断点并且能够给断点设置条件。

断点通常设置在有疑点的区域。在遇到断点之前,程序以全速运行。遇到断点之后,程序暂时停止运行,以后就可以单步或跟踪执行程序。

一、源代码断点

 

要在代码编辑器中设置源代码断点,有以下 4 种操作方式。

(1)  把光标移到要设为断点的行上,按下 F5 键。

(2)  用鼠标左键单击要设为断点的行的最左端。

(3) 用鼠标右键单击要设为断点的行,在弹出的菜单中选择【Debug】命令,再选择【ToggleBreakpoint】。

(4)  使用【Run】菜单中的【Add Breakpoint】 命令,再选择【SourceBreakpoint】,Delphi 将 打开【Add Source Breakpoint】对话框,如图 源代码断点1所示。

【Filename】框用于输入断点所在的源文件名(包含路径)。

 

【Line number】框用于输入断点所在的行号。

【Condition】框用于设置断点有效的条件,通常是一个布尔表达式。布尔表达式中可 以包含函数调用,只要该函数返回布尔值即可。

当程序执行到这个断点时,首先计算该布尔表达式的值。如果值为 True,则断点有效, 程序将暂停运行。如果值为 False,则断点无效,程序将继续执行。

【Pass count】框用于指定经过断点多少次后断点有效。例如,在一个 For 循环中设置 一个断点,每次循环时都会遇到这个断点。但并非每次遇到断点时程序都会暂停,因为还需要经过一定次数后断点才有效。

【Group】框用于对断点进行分组。可以在这个框内输入一个新的组名,也可以选择一 个已有的组名。一旦若干个断点编成组,就可以分别使用【Disable Group】命令和【Enable Group】命令成组地被禁止或允许它们,还可以给一组断点指定一系列动作。

注意:设为断点的行必须是可执行的代码行。如果把断点设在注释行、空行、变量声明的行上,调试器将认为断点无效。

默认情况下,断点所在的行用白底红字显示,并且在装订区有一个红色的小圆圈。如图 源代码断点2所示。

 源代码断点1

 源代码断点2

当鼠标指向这个小圆圈时,将弹出一个提示窗口,显示断点的条件和经过次数。

二、机器指令断点

 

Delphi 允许针对某个机器指令设断点。当程序执行到这个指令时,就会暂停(必须执行到 断点处设置)。要设置机器指令断点,有下列几种方式。

(1)  在 CPU 窗口中用鼠标左键单击某个指令 的装订区。

(2)  在 CPU  窗口中选择一个指令,然后按F5键。

(3)  在 CPU 窗口中用鼠标右键单击某个指令, 在弹出的菜单中选择【Toggle breakpoint】命令。

(4)  使用【Run】菜单中的【Add Breakpoint】命令,再选择【Address Breakpoint】,弹出【Add Address Breakpoint】对话框,如图 机器断点1所示。

 机器断点1

三、数据断点

 

Delphi 能够监视指针错误。如果内存的某个地址被改写,程序就会暂停,由调试器接管控制权,就好 像遇到断点一样。

要设置这样的断点,可以使用【Run】菜单中的【Add Breakpoint】命令,再选择【Data Breakpoint】, 出现【Add Data Breakpoint】对话框,如图 数据断点1所示。

【Address】框用于指定要监视的内存地址。可以键入一个变量名。

【Length】框用于指定数据的长度(字节数)。如果 在【Address】框中键入的是一个变量名,则【Length】

 

图  数据断点1   

【Add Data Breakpoint】对话框框可以空白,因为 Delphi 会自动计算出该变量的长度。

【Condition】框用于设置断点有效的条件,通常是一个布尔表达式。

【Pass count】框用于指定经过断点多少次后断点有效。

【Group】框用于把断点进行分组。 要说明的是,当本次调试结束时,所有的数据断点都会被禁止。下次调试时,如果还要用到这些数据断点,需要使它们有效。

标签:delphi,Add,初级教程,设置,Breakpoint,用于,源代码,断点
From: https://www.cnblogs.com/jijm123/p/18382578

相关文章

  • delphi debug 输出
    在Delphi中,你可以使用OutputDebugString函数将调试信息发送到调试器。这个函数是WindowsAPI的一部分,可以在任何使用WindowsAPI的Delphi应用程序中使用。以下是一个简单的例子,展示如何使用OutputDebugString来输出调试信息:usesWindows;procedureTForm1.Button1Click(Se......
  • 在Delphi中:如何在调试时跳过部分代码?
    在Delphi中调试时,我经常无意地进入我不感兴趣的代码。让我们首先说,我知道您可以使用F8,并且可以使用f4运行到特定的行。示例:functionTMyClass.DoStuff():Integer;begin//dosomestuffbla();end;procedureTMyClass.Foo()beginifDoStuff()=0then//pressF7......
  • delphi dxCameraControl控件(拍照)
    拍照演示DevExpressVCL组件之一 TdxCameraControlObjectHierarchy  Properties  Methods  Events 一个摄像头控件Unit dxCameraControl Syntax TdxCameraControl= class(TdxCustomCameraControl) Descrition 该控件允许您捕捉视频或图像从内......
  • delphi 里的 in 集合 语法
    在Delphi中,In关键字用于检查一个元素是否存在于一个集合中。这在处理枚举类型或集合类型时非常有用。下面是一个使用In关键字的基本示例,演示如何检查某个值是否属于一个枚举或集合。首先,假设我们有一个枚举类型:typeTDays=(Monday,Tuesday,Wednesday,Thursday,Frid......
  • 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言
    非科班出身,现在才接触汇编,惭愧呀,好好学!主选课本是清华大学王爽老师的《汇编语言》.推荐 王爽老师的汇编网汇编语言之前是机器语言.机器语言是机器指令的集合,机器指令是一系列二进制数字,计算机将之转换为一系列高低电平,而实现运算.在PC机上运行机器指令的是CPU;......
  • 初学 Delphi 嵌入汇编[2] - 汇编语言关键字
    汇编语言不区分大小写.关键字用途AH AL AND AX BH BL BP BX BYTE CH CL CS CX DH DI DL DS DWORD DX EAX EBP EBX ECX EDI EDX EIP ES ESI ESP FS ......
  • 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子
    前面知道了一个汇编的赋值指令(MOV),再了解一个加法指令(ADD),就可以做个例子了.譬如:ADDAX,BX;这相当于Delphi中的AX:=AX+BX;另外提前来个列表-Delphi可以用汇编管理以下寄存器:32位寄存器:EAXEBXECXEDXESPEBPESIEDI16位寄存器:AXBXCXDXSPBPSID......
  • delphi webbrowser屏蔽右键菜单 防止右键 防止ctrl N
    本文介绍了如何在Delphi中通过事件处理和消息过滤,阻止WebBrowser控件中的右键菜单以及防止用户使用Ctrl+N快捷键。通过`ProcessMsg`和`ApplicationEvents1Message`等方法实现对浏览器行为的控制。{关键字=webbrowser屏蔽右键菜单防止右键防止ctrlN采集软件=MKM-我的知识管理......
  • delphi加密C#解密(AES-256)
    因为公司内部业务需要,用delphi加密的内容(流和字符串)要用C#解密,因为不懂delphi,我这里只是问同事要了代码,贴上delphi加密:共两个文件(AES.pas和ElAES.pas)AES.pas:(**************************************************************)(*......
  • [oeasy]python0030_动态控制断点_breakpoints_debug_调试
     030_动态控制断点_breakpoints_debug_调试290播放·0赞同视频​设置断点_break_point_continue_运行到断点......