visual studio 2010 -如何调试c#项目中的c++ dll

本文关键字:项目 dll c++ 调试 2010 studio 何调试 visual | 更新日期: 2023-09-27 17:49:41

我已经创建了一个visual c++ 6.0 dll项目,并从我的c#代码中使用它。现在我想调试dll,但我不能这样做。

我选择下面的选项来做:

  • 将断点放在我的visual c++项目代码中。
  • 构建dll并复制到我的c#项目目录。
  • 现在我建立我的c#项目和dll工作正常(方法调用完美)。
  • 现在我想调试dll
  • 我关注一个博客,打开c++项目,从vc++中选择Attach to process
  • 但是我找不到visual c#项目的运行进程,而它在任务管理器进程中可用。

在我的c#项目解决方案中,我有两个项目,即

  • web服务(在访问url时调用dll方法)
  • 另一个是启动web服务的webform application

现在请帮助我如何调试我的dll。我已经关注了很多博客,但他们都专注于Attaching process方法,这在我的情况下不起作用。我该怎么办?

visual studio 2010 -如何调试c#项目中的c++ dll

您需要启用非托管调试,在任何情况下默认情况下都不会打开它,因为您的主程序是托管的。

您可以在c#项目中使用项目>属性>调试选项卡>勾选"启用非托管代码调试"复选框。

您可以通过单击选择按钮在工具>附加到进程中执行此操作。选择"调试这些代码类型"单选按钮并同时勾选Managed和Native。如果您的进程是64位的,您可能不得不求助于本机。

在DLL的源代码中设置一个断点,并确保编写c#代码来执行DLL函数。如果您仍然无法获得断点,则使用调试> Windows>模块并验证您是否在模块列表中看到DLL。通过右键单击它,选择符号加载信息来获取其他故障排除信息。它显示了调试器在哪里查找PDB文件的跟踪。

您可以将c++项目添加到您的c#解决方案中,并直接向项目(而不是dll)添加引用,然后您将不需要复制dll。之后,只需启动c#项目的正常调试(F5),断点也将适用于c++项目。这种方式将非常适合调试。我已经尝试了这样的调试,没有改变任何其他设置