所谓断点,就是在程序代码的某一行上设置一个标记,程序执行到这里将暂停,由调 试器接管对程序的控制。使用断点与使用【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初级教程之delphi断点调试一相关推荐

  1. delphi初级教程之delphi断点调试二

    四.模块断点 要监视模块的第一次加载,可以使用[Run]菜单中的[Add Breakpoint]命令,再选 择[Module Load Breakpoint],出现[Add Module]对话框,如图 ...

  2. HUAWEI WeAutomate RPA初级教程之PPT自动化

  3. ExtJS初级教程之ExtJS Tree(一)

    ExtJS是一款基于Ajax的web客户端框架,有着更加和漂亮友好的界面,今天起我就开始学习ExtJS了,下面我把我学习的过程与大家分享. 我先学习我最近用到ExtJS Tree.下面我们开始写我们的 ...

  4. ExtJS初级教程之ExtJS Tree(三)

    前两次我介绍了静态树和根据数据库加载的数据生成的树,今天我就把ExtJS Tree这剩的一些主要的东西说一说,剩下的主要就是:树的事件处理.可编辑的树和可拖拽的树,最后再实现一下异步加载的树. 树的事 ...

  5. JSP入门初级教程之JSP概述

    JSP(IAVA SERVER PAGES)是由Sun 公司在java语言上开发出来的一种动态网页制作技术,其可使您可以将网页中的动态部分和静态的HTML相分离.您可以使用平常得心应手的工具并按照平常 ...

  6. DELPHI 7 动态链接库DLL断点调试

     DELPHI 7 动态链接库DLL断点调试           马根峰           (广东联合电子服务股份有限公司, 广州 510300) 作者博客: CSDN博客:http://blog. ...

  7. 如何使用IDEA断点调试(debug), 用图文并茂的方式来教你

    文章目录 前言 一.为什么要使用debug 二.使用方法 1.逐行代码查看 2.数组越界 3.方法进入.出去 4.动态下断点 总结 前言 今天在刷算法题的过程中,遇到了很多错误,自己怎么想也想不明白, ...

  8. 学习笔记02 - Eclipse断点调试(DeBug)使用技巧学习_初级

           在进行Java开发或者学习时,不少人可能会使用Eclipse软件,当然开发过程中可能会遇到各种编译.运行出现错误的问题,这时我们就需要对代码进行Debug,检查到底哪里出了问题.因此,熟 ...

  9. php断点调试的几种方法

    断点调试是程序开发过程中的一个必不可少的步骤,一些程序的断点调试操作比较简单,只需在编辑器里标记哪行为断点,便可得知程序各个环节的输出结果,例如c#.VB.Delphi等语言. 但是对于PHP程序的调 ...

最新文章

  1. Oracle 常用命令 及近期使用问题集合
  2. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址
  3. MEF学习笔记(6):出口和元数据
  4. 题解 P1876 【开灯】
  5. 宋体配置JAVA j2ee (一) 轻松入门
  6. SQL Server监控全解析
  7. MVC的优点及不足之处
  8. ctguoj-取石头 (15分)
  9. 【代码优化】for-each代替普通的for循环或者while循环
  10. 实验十、静态路由和直连路由引入配置
  11. 你的接口真的线程安全了么?聊聊保证线程安全的10个小技巧
  12. matlab洛伦兹吸引子,用Matlab求解洛伦兹方程
  13. DELL笔记本E5400刷BIOS激活win7
  14. PandoraBox Openwrt 上面设置DNS
  15. Java EE 7 Hands-on Lab,CDI deployment failure:WELD-000072,解决办法
  16. Red Hat Ubuntu Centos 更改登录横幅
  17. Android快速开发框架之xUtils---图片模块
  18. 时光倒流:业务支撑那些事(四)
  19. [日推荐]『TheGolfGame』一个高端大气上档次的小程序
  20. 我的世界Minecraft模组开发(7)合成表

热门文章

  1. 注解_自定义注解_元注解
  2. 单例-初始化动作只执行一次
  3. 设计模式之_Strategy_03
  4. 串口怎样配置才能无论奇偶校验都能正常接收_(七)串口(串行)通信
  5. IDEA使用技巧整理
  6. python调用winrar解压_批量文件解压缩脚本(Python3.5 + WinRAR)
  7. android和flask交互,java - 当我从Android向Flask Web服务发送参数时,如何解决“ SSL库故障”? - 堆栈内存溢出...
  8. 应用指定显示到副屏_LED灯杆屏广泛应用逐渐成为智慧城市信息化的重要窗口
  9. 如何反复读取同一个 InputStream 对象
  10. 【详解】Java语言的特点以及Java语言与C/C++的比较