★★★300求如何用Delphi调试Service程序★★★(300分)

  • 主题发起人 主题发起人 xf-wangyi
  • 开始时间 开始时间
X

xf-wangyi

Unregistered / Unconfirmed
GUEST, unregistred user!
最近自己在写Windows Service的东东,以前写的都比较简单,线程里处理的事情不多

现在自己做的一个东东里,比较复杂一点点。。。

写好了Install之后启动总是出错,不知道怎么调试,只能在代码里加了很多调试信息,然后一步一步的输出调试信息到文本文件中,再自己去看

谁能告诉我怎么调试Service
 
用EuroLog什么的啊
我没用它调Service,知道它应该有此功能
 
EuroLog不方便啊
我想要的是中断,单步。。。
 
看看这个
http://tech.cixiong.com/t/200408/12/0322536.html
 
难道在Delphi的IDE下真没有方法可以调试
 
http://www.funba.com/Resource/msdn/vbcon/vbtskdebuggingserviceapplications.htm
用类似的附加到服务进程进行调试,没法直接运行调试,Delphi的调试功能和VC的调试
功能类似啊,参考一下应该可以的
 
这样调试的话我用Softice就可以了[:(]
 
它没有源码级调试吧?
 
我哭,我现在的服务启动都有问题,算了,先把OnStart里改改吧
 
用DELPHI进行NT、2000、2003服务程序的调试
有两种途径可用于调试服务程序。第一种是在单独的类中定义服务的工作部分,并在一个单独的程序中对其进行调试。第二种是在服务运行时进行调试。第一种途径是个好主意;把负责服务工作的类添加到通常的程序是测试服务行为的最容易的方法,而且保持了与工作台测试的思想的一致性。
我们使用第一种方法,在创建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”包含了调试服务的第三种途径,其中涉及到修改注册表设置,您可以参考。


自己找到点资料,我先试试看
 
对,就是这意思,你试试吧
 
晚上回家了试,没问题就结贴[:D]
 
接受答案了.
 
后退
顶部