【问题标题】:Debugging my windows DLL that might be invoked from a Windows Service调试可能从 Windows 服务调用的 Windows DLL
【发布时间】:2009-01-21 11:23:45
【问题描述】:

我每次执行 snmpwalk(另一个控制台应用程序)时都有由 Windows SNMP 服务 (snmp.exe) 调用的 SNMP 扩展代理 DLL。我想进入从上述 Windows 调用的 DLL 代码 服务。我该怎么做呢?

谢谢 索姆

【问题讨论】:

    标签: c dll windows-services


    【解决方案1】:

    通常,您会将调试器附加到使用您的 DLL 的正在运行的进程,然后像往常一样与调试器交互。

    在 Visual Studio 2008 中,您可以通过使用“调试”>“附加到进程”来执行此操作,然后选择正确的进程。至少我依稀记得以前是这么干的。

    【讨论】:

    • 嗨,感谢您的回复,但在这种情况下,我没有 src 代码,也没有用于调用我的 DLL 的进程(实际上是标准 Windows SNMP 服务)的解决方案,我有不希望有调用 SNMP 服务的控制台应用程序的 src 代码
    • 正如 Dmitriy Matveev 指出的那样,您不需要使用 DLL 的应用程序的源代码,但您仍然可以在 DLL 中看到源代码和变量,只是不在外部。
    【解决方案2】:

    您可以按照 Timo Geusch 的建议从 Visual Studio 附加到正在运行的服务。之后,您可以在代码中设置断点。您还可以在要调试库的地方添加对DebugBreak 函数的调用。如果要调试的代码在附加到进程之前执行(例如,如果您的代码在服务启动事件的处理程序中执行),这可以帮助您。

    编辑:您可以附加到任何服务,即使您没有调试信息,但在这种情况下,您将无法看到函数调用上方的堆栈跟踪。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2011-02-07
      • 1970-01-01
      • 2012-03-05
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多