c# - 如何从 C# 项目中调试 C++ DLL?

标签 c# visual-studio-2010 debugging visual-c++ dll

我已经创建了一个 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/

相关文章:

c# - 我可以在 C# 库中有全局预处理器定义吗?

c++ - 可以调用的函数数组,如 'funs[1]();'

c# - 从 ActionExecutingContext 获取原始端口?

c# - 如何将类类型从 SL 应用程序传递到 SL 库?

c# - C# 中的最大长度名称类

c# - Nhibernate ArgumentNullException 未处理 值不能为 null 参数名称 : stream

c++ - 在未安装 visual 的计算机上设置 xll

debugging - 雅司病进程死亡 : {{badmatch, <<>>}

eclipse - 让 Eclipse 让我在自定义语言代码中设置断点

c++ - Xcode 7 调试器不会中断内联 header 函数