繁体   English   中英

如何从c#项目调试c ++ dll?

[英]How to debug the c++ dll from c# project?

我创建了一个visual c++ 6.0 dll项目,并使用我的c#代码。 现在我想调试dll但我无法做到。

我选择以下选项来执行此操作:

  • 把断点放在我的visual c++项目代码中。
  • 构建dll并将其复制到我的c#项目目录中。
  • 现在我构建我的c#项目并且dll工作正常(方法调用完美)。
  • 现在我想调试dll
  • 我按照博客打开c++项目,然后从vc++选择Attach to process
  • 但我无法找到visual c# project的运行过程,而在任务管理器进程中可以找到它。

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

  • Web服务(我在访问URL时调用了dll方法)
  • 另一个是启动Web服务的webform application

现在请帮助我如何调试我的DLL。 我已经关注了很多博客,但他们都专注于Attaching process方法,这种方法在我的条件下无效。 我该怎么办?

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

您可以在C#项目中使用Project> Properties> Debug选项卡>勾选“启用非托管代码调试”复选框。

您可以通过单击“选择”按钮,使用“工具”>“附加到进程”来执 选择“调试这些代码类型”单选按钮并勾选Managed和Native。 如果您的进程是64位,则可能不得不求助于本机。

在DLL的源代码中设置断点,并确保编写运行DLL函数的C#代码。 如果仍然无法获得断点,请使用Debug> Windows> Modules并验证您是否在模块列表中看到DLL。 通过右键单击获取其他疑难解答信息,选择符号加载信息。 其中显示了调试器查找PDB文件的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM