我已经创建了一个 visual c++ 6.0 dll
项目并在我的 c#
代码中使用它。现在我想调试 dll
但我做不到。
我选择以下选项:
- 将断点放在我的
visual c++
项目代码中。 - 构建 dll 并将其复制到我的
c#
项目的目录中。 - 现在我构建了我的
c#
项目并且 dll 工作正常(方法调用完美)。 - 现在我想调试
dll
。 - 我关注一个博客并打开
c++
项目并从vc++
中选择Attach to process
。 - 但我无法找到
visual c#
项目的运行进程,而它可以在任务管理器进程中找到。
在我的 c#
项目解决方案中,我有两个项目,即
- 网络服务(我在访问一个url时调用了dll方法)
- 另一个是启动 Web 服务的
webform 应用程序
。
现在请帮助我如何调试我的 dll。我关注了很多博客,但所有博客都专注于 Attaching process
方法,这在我的情况下不起作用。我该怎么办?
最佳答案
您需要启用非托管调试,它在任何一种情况下都不会默认打开,因为您的主程序是托管的。
您在 C# 项目中使用“项目”>“属性”>“调试”选项卡> 勾选“启用非托管代码调试”复选框。
您可以通过单击“选择”按钮,使用“工具”>“附加到进程”来完成此操作。选择“调试这些代码类型”单选按钮并勾选托管和 native 。如果您的进程是 64 位的,您可能不得不求助于 native 。
在DLL的源代码中设置断点,并且一定要编写执行DLL函数的C#代码。如果您仍然无法获取断点,请使用“调试”>“Windows”>“模块”并验证您是否在模块列表中看到了 DLL。通过右键单击它获取其他故障排除信息,选择符号加载信息。这显示了调试器在何处查找 PDB 文件的痕迹。
关于c# - 如何从 C# 项目中调试 C++ DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069573/