我创建了一个visual c++ 6.0 dll
项目,并使用我的c#
代码。现在我想调试dll
,但我无法做到。
我选择以下选项:
visual c++
项目代码中。c#
项目的目录中。c#
项目并且dll工作正常(方法调用完美)。dll
。 c++
项目,然后从Attach to process
选择vc++
。visual c#
项目的正在运行的进程,而在任务管理器进程中可以找到它。在我的c#
项目解决方案中,我有两个项目,即
webform application
。现在请帮帮我怎样调试我的dll。我已经关注了很多博客,但所有博客都关注Attaching process
方法,这种方法在我的情况下无效。我该怎么办?
答案 0 :(得分:9)
您需要启用非托管调试,默认情况下,在任一方案中都不会启用它,因为您的主程序是受管理的。
您可以使用Project>在C#项目中执行此操作属性>调试选项卡>勾选“启用非托管代码调试”复选框。
您可以使用工具>单击“选择”按钮附加到“处理”。选择“调试这些代码类型”单选按钮并勾选Managed和Native。如果您的进程是64位,则可能不得不求助于本机。
在DLL的源代码中设置断点,并确保编写执行DLL函数的C#代码。如果仍然无法获得断点,请使用Debug> Windows>模块并验证您是否在模块列表中看到DLL。通过右键单击获取其他疑难解答信息,选择符号加载信息。其中显示了调试器查找PDB文件的位置。
答案 1 :(得分:0)
您可以将C ++项目添加到您的C#解决方案并直接向项目添加引用(而不是dll),然后您将不需要复制DLL。之后,只需启动C#项目的正常调试(F5),断点也将适用于C ++项目。这种方式非常适合调试。我已经尝试过这样的调试,并没有改变任何其他设置。