用DELPHI进行NT、2000、2003服务程序的调试

原创 2005年05月25日 09:21:00

NT服务程序的调试


----------摘自书籍Delphi 6 应用开发指南


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

叶正盛
2005-05-22

Delphi调试服务程序的两种方法

近日在做服务项目中总结了两种delphi service调试方法,供大家借鉴: 一、编译指令 这种方法原理就是让服务以普通程序的方式来运行。 首先处理项目文件的单元头(RUNASAPP即为编译指...
  • youxiazzz12
  • youxiazzz12
  • 2013年08月15日 12:20
  • 1549

局域网中文件夹的共享 Windows NT/2000/XP

局域网中文件夹的共享 Windows NT/2000/XP在局域网中通过程序实现文件夹的共享,就我知道的应该至少有两种实现方式。一是修改注册表,但是这种方法存在的问题也是很明显的,必须重起机器才能生效...
  • smandhgx
  • smandhgx
  • 2002年11月28日 09:12
  • 2620

delphi NT服务程序制作

NT 服务程序在系统启用后就开始工作了,即使没有用户登录。 用delphi做nt程序也很简单了,new-> other -> new页签 --> service Application. 便会生成一...
  • u010673851
  • u010673851
  • 2015年11月05日 16:53
  • 358

用delphi7编写windows服务程序总结

        本来是没有打算把软件写成服务形式的。起因是因为,我原来写的一个TCP通讯程序的客户端,客户在使用时,因为经常断电,所以服务器有时候会重启,因为原来的程序不是服务形式的,在没有登陆win...
  • yuehaiyang
  • yuehaiyang
  • 2007年12月11日 16:47
  • 1539

怎样写一个 NT 服务程序

每个操作系统都需要有在后台执行任务的方法,无论是谁正在使用这部机器,这些任务都可以继续运行,后台任务可以处理各种重要的服务,包括系统的或者用户的。例如,一个信使服务可以监控网络,并且在接收到另一台机子...
  • thanklife
  • thanklife
  • 2017年04月07日 16:46
  • 268

Delphi创建服务程序

Windows 2000/XP和2003等支持一种叫做”服务程序”的东西.程序作为服务启动有以下几个好处: 不用登陆进系统即可运行. 具有SYSTEM特权.所以你在进程管理器里面是无法结束它的. 如何...
  • wsgqp
  • wsgqp
  • 2016年07月13日 20:13
  • 2823

WindowsNT/2000的系统日志文件

一.Windows日志系统     WindowsNT/2000的系统日志文件有应用程序日志AppEvent.Evt、安全日志SecEvent.Evt、系统日志SysEvent.Evt,根据系统开通...
  • leizi191110211
  • leizi191110211
  • 2016年06月02日 15:48
  • 674

一个建立NT服务的类

作者:Joerg Koenig 翻译:Yuan Wenmao 原文:A Class For Building An NT Service 曾经尝试写一个NT服务吗? 我最近的一个项目需要开发一...
  • yuanwenmao
  • yuanwenmao
  • 2011年08月28日 03:10
  • 887

用Delphi编写Windows服务程序

一、Windows服务简介   服务程序(Service Application)是一种运行于WinNT的后台程序,每个服务程序(Service Application)中可能包含若干个服务(Ser...
  • xiexuan2007
  • xiexuan2007
  • 2014年01月06日 11:51
  • 2040

delphi创建具有托盘的服务程序(service)

Windows 2000/XP和2003等支持一种叫做"服务程序"的东西.程序作为服务启动有以下几个好处:     (1)不用登陆进系统即可运行.     (2)具有SYSTEM特权.所以你...
  • chinmusam
  • chinmusam
  • 2014年02月25日 21:37
  • 4864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用DELPHI进行NT、2000、2003服务程序的调试
举报原因:
原因补充:

(最多只允许输入30个字)