我正在开发一个DLL(在Visual C#Express中),其中包含一些应用程序的插件逻辑。
有没有办法调试这个DLL,一旦它被应用程序使用?该应用程序在Windows上作为服务运行,它是一个COTS应用程序,这意味着它不是我可以从中开始调试的C#项目。
我知道在Visual C#Express中有关于调试的限制。在Visual Studio Pro中可以执行此任务吗?
我想要实现的是能够逐步完成逻辑,设置断点以查看呼叫到来时发生的事情。有线索吗?
答案 0 :(得分:2)
我不确定VS Express,但通常是
希望它有所帮助。
答案 1 :(得分:1)
虽然我不完全确定它如何与服务一起使用,但您可以设置任意调试目标。
在调试面板(在项目属性中)中,您可以将任何可执行文件或其他命令设置为调试目标。无论可执行文件来自何处,此命令生成的进程都将附加调试器。目标不是C#项目或任何Visual Studio项目的要求。这应该在Express和Pro中都可用。可以附加到后面的进程(如果你有一个启动器),但这可能超出了你当前的范围。
然后像往常一样在代码中设置断点,当代码被命中时(无论代码是否调用它或主机可执行文件),都会触发断点。根据您对主机的信息量,您也可以有效地调试它;即使您没有任何信息,您也可以逐步完成组装。
此处唯一的要求是目标加载并运行您的代码。根据上下文(程序插件,注入依赖项,诸如此类),这具有不同的难度。这种技术在很多地方使用,特别是你可能无法调试实际主机的插件系统,但仍然希望使用你的插件。
另一个稍微丑陋的变化是迫使主人破坏和自我识别。这仅适用于调试,因为它非常具有破坏性。典型的方法是显示带有进程ID的消息框(模态)。然后该进程将暂停,直到消息被解除,并且可以附加调试器。尽管仍然存在以阻塞方式发布信息的方法,但服务变得更加困难。
答案 2 :(得分:1)