Delphi应用程序的调试(五)其他调试工具 Delphi7中提供了一些附加调试工具来帮助用户检查程序错误.从性能上讲,其中一些工具属于高级调试工具.尽管高级调试工具不像其他工具那样常用,但对于经验丰富的编程人员来说,它们是非常有用的. Evaluate/Modify对话框(The Evaluate/Modify Dialog Box) 该对话框用于检查变量的当前值和修改变量的值.使用这个对话框,用户可以修改某个变量的值来测试不同的输出结果.在调试期间改变一个变量的值,使用户能测试程序不同参数的…
Delphi应用程序的调试(二)使用断点 使用断点(Using Breakpoints) 当用户从Delphi IDE 运行程序时,程序全速运行,只会在设置了断点的地方停住. New Term 断点(breakpoint)是一种标记,用以通知编译器,当程序运行到断点所在位置时暂停程序的执行. 设置和清除断点(Setting and Clearing Breakpoints) 断点的设置可通过点击Code Editor的沟槽来进行:要在代码的某一行暂停程序执行,就在沟槽中与该行相对应的位置上点击鼠…
可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局级调试选项.从主菜单[Tools | Debugger Options]菜单项调出Debugger Options对话框. 在Debugger Options对话框的底部有一个标记为Integrated debugging的复选框,它控制是否使用IDE调试器调试程序.如果选中Integrated d…
可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局级调试选项.从主菜单[Tools | Debugger Options]菜单项调出Debugger Options对话框. 在Debugger Options对话框的底部有一个标记为Integrated debugging的复选框,它控制是否使用IDE调试器调试程序.如果选中Integrated d…
步进式代码调试(Stepping Through Your Code) 步进式代码调试是最基本的调试操作之一,但仍要在此讲述.人们常常容易犯只见树木不见森林的错误.经常复习基本的知识有助于读者了解以前不知道的东西. 调试沟槽符号(Debugging Gutter Symbols) 在开始讲述之前,先要说说在调试会话期间出现在Code Editor沟槽中的符号.在之前的讲解中讲过,当用户在一个代码行上设置一个断点,沟槽中就会出现一个红色的圆圈. 沟槽中还有一个绿色箭头符号指示执行点所在位置.如下图…
监视变量(Watching Variables) 当程序停在一个断点处时,用户做些什么呢?通常用户在断点处停下来是要检查变量的值,某个变量的值是否与预料的取值相同?或者某个变量取什么值(事先并不知道这个变量的取值). Watch List窗口的作用是使用户能检查变量的值.编程人员常常忽视这个简单而又根本的特性,因为他们没有花时间来完整地学习调试器的使用.用户可添加任意多的变量到Watch List中.下图就是调试会话期间的Watch List窗口. 变量名和变量值都显示在Watch List中.…
集成式调试器是Delphi IDE的一个重要特性.该调试器使用户能方便地设置断点.监视变量.检查对象等等.在运行程序时,使用该调试器能快速查找出程序发生了什么(或未发生什么).一个号的调试器对程序开发的效率至关重要. 调试工作容易被忽略.我也是刚开始学习Windows编程时,很长时间都未理睬调试器,因为当时忙于学习如何编写Windows应用程序.当后来知道这是一个很有价值的调试器的后,才后悔为什么没有早点使用它.希望大家从我的经历中吸取教训. 一.为什么使用调试器 对于这个问题的回答很简单:调试…
调试检查器(The Debug Inspector) Debug Inspector使用户能查看诸如类和记录的数据对象,也可以用它来查看整数.字符数组等简单数据类型,但这类简单数据类型最好是用Watch List查看.Debug Inspector最大用途是用于查看类和记录. Note 只有在调试器下运行的程序暂停执行时,才能使用Debug Inspector. 要查看一个对象,点击Code Editor中该对象的名字,并从Code Editor的快捷菜单中选择[Inspect]菜单项或按[Al…
Delphi插件创建.调试与使用应用程序扩展 翻译 : MiracleZ  有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉.对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中).一个插件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力.例如,Photoshop本身并不具备进行大量的图像处理功能.插件的加入使其获得了产生诸如模糊.斑点,以及其他所有风格的奇怪效果,而其中任何一项功能都不是父应用程序自身所具有的.对于…
目录 应用调试(五)侵入式SWI 场景应用 测试程序 修改APP的bin 修改SWI 获得当前进程的寄存器 测试运行 恢复代码 进程间内存拷贝 TODO 更多参考文献 title: 应用调试(五)侵入式SWI date: 2019/01/19 21:27:31 toc: true --- 应用调试(五)侵入式SWI 场景应用 反汇编源程序,查看汇编代码,然后直接修改二进制的bin文件,替换其中一条A指令为B指令,B指令是swi跳转指令 构造一个SWI跳转,加入到内核中,这个SWI跳转可以用来打印…