【发布时间】:2012-01-18 13:39:06
【问题描述】:
我编写了一个 C# 项目,其中使用了 C++ dll(也是我编写的)。我正在尝试从我的 C# 解决方案中调试此 dll 函数。
我已将 C++ 项目添加到 C# 解决方案并管理其输出 - 没关系。但我无法进入 dll 函数(未加载断点)。
【问题讨论】:
标签: c# c++ visual-studio-2010 debugging
我编写了一个 C# 项目,其中使用了 C++ dll(也是我编写的)。我正在尝试从我的 C# 解决方案中调试此 dll 函数。
我已将 C++ 项目添加到 C# 解决方案并管理其输出 - 没关系。但我无法进入 dll 函数(未加载断点)。
【问题讨论】:
标签: c# c++ visual-studio-2010 debugging
假设您使用的不是 Express 版本的 Visual Studio,您应该能够通过选中您正在运行的项目的属性窗格中的选项来允许本机 C++ 调试。转到项目属性 -> 调试 -> 启用非托管代码调试。
【讨论】:
您需要确保在调试模式下编译和链接您的本地 DLL。虽然我不经常使用 Visual Studio IDE,但您想要的命令行选项是 /Zi 用于 cl.exe 和 /DEBUG 用于 link.exe。这应该会导致在构建 DLL 时启用调试符号,并生成一个 .pdb 文件。然后,您应该能够像往常一样附加到该进程(您可能必须从 Visual C++ 调试器执行此操作 --- 再说一次,我不太使用 IDE)并在 DLL 中的函数上设置断点。
【讨论】:
塞缪尔·斯莱德的回答是正确的,有一个澄清:
我试图使用 Visual Studio 2010 从一些 C# 代码调试到 ATL/MFC C++ COM 对象。我为每个项目都有一个单独的解决方案,但无法使其工作。当我将这两个项目放入一个解决方案并启用非托管代码调试时,效果非常好。
因此,将两个项目塞进一个解决方案,它应该可以工作。
【讨论】: