有两种途径可用于调试服务程序
第一种是在单独的类中定义服务的工作部分
并在一个单独的程序中对其进行调试
第二种是在服务运行时进行调试
第一种途径是个好主意
把负责服务工作的类添加到通常的程序是测试服务行为的最容易的方法
而且保持了与工作台测试的思想的一致性
我们使用第一种方法在创建ServiceApp 和TestMailer(本书光盘上也有)这两个程序时进行测试把同样的组件TIdMessageTTimer 和TIdSTMP 添加到一个单独的程序然后创建一个邮件发送器当找到TestMailer 程序的缺陷后所有的修改都更新到服务程序创建工作台或测试程序是很容易的但并不总是够用
第二种测试服务程序的途径是安装并运行服务程序然后将其附加到Delphi 中的运行进程按照下列步骤即可在运行服务时调试ServiceAppexe 程序
在命令行运行Serviceappexe /INSTALL安装服务程序
选择Start | Settings | Control Panel | Administrative Tools | Services将运行Services 小应用程序找到MyService然后单击Start Service 工具栏按钮(这些步骤适用于Windows 在Windows NT 中的步骤几乎相同)
运行Delphi
装载ServiceAppdpr 工程
在Delphi 中选择Run | Attach to Process 菜单项
在Attach to Process 对话框(如下图所示)中选中Show System Processes 复选框
[[The No Picture]]
找到ServiceAppexe然后单击Attach 按钮
在Delphi 中对工程源文件的OnExecute 事件方法设置断点然后按键F
图B Attach to Process 对话框可用于将Delphi 调试器附加到已运行的进程上这对于调试服务程序是很有用的
Delphi 将把调试器附加到运行的服务程序上并打开CPU 对话框除非您阅读汇编语言非常流畅否则CPU 视图用处不大但当服务程序运行到断点时将停止在断点上并切换到Delphi 代码视图在用户通过Delphi 获取对已运行服务的控制之后即可像其他程序一样对服务进行步进和调试
注意作为开发者您应该对自己的PC 具有管理员权限令人难以置信的是有些组织信任开发者编写的代码但却不允许他们管理自己的PC现在的经济形势仍然很好找一份新工作吧
Delphi 帮助文档提到如果权限不足那么附加到服务进程可能会失败当只要对PC 拥有管理员权限附加到运行的服务进程总是工作正常帮助主题Debugging Services包含了调试服务的第三种途径其中涉及到修改注册表设置可以参考