【问题标题】:How can I make Visual Studio 2008 automatically attach to a service when it starts?如何让 Visual Studio 2008 在启动时自动附加到服务?
【发布时间】:2013-09-09 14:47:00
【问题描述】:

我在 C 中创建了一个 Windows 服务(使用 WinAPI),我希望 Visual Studio 在我从“服务”面板启动服务时自动附加到该服务的进程。 这怎么可能实现。 附言将 MessageBox 放在服务的初始化函数中而不是手动附加不是我正在寻找的那种解决方案。

【问题讨论】:

  • Visual Studio 仅支持您试图阻止的 attach to process 路由。一种解决方法是编写您自己的服务主机,加载您的服务可执行文件并调用其导出。可以在 here 找到 .NET 实现,包括其他信息。

标签: winapi visual-studio-2008 service visual-studio-debugging


【解决方案1】:

我找到了解决方案。只需在注册表中添加以下键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\图像文件执行选项\THE_NAME_OF_YOUR_SERVICE_EXECUTABLE.exe]

并添加以下值和数据:

"调试器"="vsjitdebugger.exe"

请注意,您必须在完成测试后删除此值,否则 Visual Studio 将在服务启动时提示附加消息。

这适用于 Windows XP x32。我还没有测试过其他任何东西。

【讨论】:

  • 有价值的信息,感谢分享。您是否碰巧有文档链接或博客条目?该值是什么注册表数据类型?
  • 抱歉,我没有任何文档。一位朋友向我展示了这个,但他不记得他在哪里找到了这个信息。类型为 REG_SZ。
【解决方案2】:

放置__asm int3;在代码开头或要附加调试器的位置。

【讨论】:

  • 支持的程序是DebugBreak。 on Itanium and x64 处理器不支持内联汇编。
  • 这可行,但它涉及修改和重新编译代码(完成后修改 int )。虽然它比我说我不想要的“MessageBox”解决方案更优雅,但它仍然不是我真正想要的。
猜你喜欢
  • 2012-02-24
  • 2019-10-09
  • 2011-11-28
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多