如何在集成环境中调试NT Service程序? up有分! (100分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
例如可以加断点,查看修改变量。。。。

查过以前的贴子,答案无非是新建一个tapplication程序,使用log文件记录等等。

所以想听听高手的声音。
 
似乎没有更高的办法了,关注!
 
把 uses svrmgr 改为 uses forms,调试完成后再改回。
 
开玩笑吧? 改成forms连编译都不能通过,如果调试?

TService1 = class(TService) //TService的定义就在svrmgr中
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
 
有一个很好的办法,不知适不适合你用。
其实在集成环境里直接run你的service程序是可以调试的,比如create事件中,在
服务控制器和delphi环境中运行的区别就在于,TService1.ServiceExecute(Sender: TService);
这个事件不会被运行,也就是这个线程系统不创建,
但你可以在create里另外创建一个线程,把你的代码写在里面,调试好后在放回TService1.ServiceExecutez中,
省事的话就干脆不用这个主线程。
 
attach to process 就行了
调试服务程序就像调试一般程序一样的简单
什么断点阿那些随便设
 
freezing,说了半天,到底如何做?
 
给分了,freezing一人独得100!
 
to :freezing
能具体说明一下 服务程序如何调试的吗 ? attach to process 不是汇编语句吗?
 
在服务类的OnStart事件中,在Started := True;前面,加入以下代码:
sleep(10000); //休息十秒,好让你有反应时间
然后通过服务管理器启动服务,马上切换到Delphi中,点Run->Attach to process,选择和你的服务同名的那个程序(如果列表中没有,点一下左下角的“Show system process复选框”),点Attach,OK.
 
后退
顶部