自动“附加到进程”以进行服务调试

时间:2015-07-13 09:45:51

标签: delphi service process

我目前正在创建一项服务,我需要调试它们。我还使用“附加到流程”表单。

(如第一段http://docwiki.embarcadero.com/RADStudio/XE8/en/Debugging_Service_Applications所述)

但是构建它们之后可以自动将调试器与服务相关联吗?

我已经使用预构建事件来重启我的服务。

2 个答案:

答案 0 :(得分:3)

  

但是构建它们之后可以自动将调试器与服务相关联吗?

不,不是。调试器无法直接启动服务可执行文件,只有SCM可以执行此操作。虽然SCM可以编写脚本来以可编程方式启动服务,例如从命令行批处理文件,但调试器无法手动附加到正在运行的进程上。

答案 1 :(得分:1)

您可以构建一个与调试代码的服务相同的普通应用程序。只需将所有需要的单元添加到第二个项目中。我们使用这种方法来调试我们的服务(此外,这个应用程序包含一个日志文件查看器,我们可以在其中查看我们的服务生成的日志)

另一种方法是:

  • 在某处创建“markerfile”(只是一个简单的文本文件)
  • 在服务内部有一个循环,当标记文件不存在时退出
  • 在等待循环之后设置断点
  • 启动服务(它循环等待标记文件被删除
  • 将调试程序附加到服务进程
  • 删除“markerfile”
  • 服务退出等待循环并在断点处停止
  • 调试