无法从C#调试非托管Dll

Que*_*mer 32 c# c++ debugging breakpoints visual-studio-2008

我有一个DLL,它是C++C#应用程序中编写和调用的.这DLL是非托管代码.

如果我将带有post build事件的文件DLL及其.pdb文件复制到C#应用程序的调试执行中,dir我仍然无法点击我放入DLL代码中的任何断点.断点附有一条消息,称"没有为此文档加载符号".

我还需要做些什么才能在dll源代码中进行调试?

我有" Tools- > Options- > Debugging- > General- > Enable只有我的代码"已禁用.将DLL被以"运行时跟踪和禁用优化(/ ASSEMBLYDEBUG)",并生成调试信息来编译"是(/ DEBUG)"

Jar*_*Par 58

要调试C++ DLL,您需要在解决方案中的启动应用程序上启用混合模式调试.

  • 右键单击项目 - >属性
  • 转到"调试"选项卡
  • 选中"启用非托管代码调试"

这将允许您调试F5样式场景的本机代码.如果要将其启用以附加到进程,请在"附加到进程"对话框中执行以下操作

  • 选择要调试的过程
  • 单击流程列表上方的"选择..."按钮
  • 单击"调试这些代码类型"
  • 检查Managed和Native

  • 对于VS 2013,该设置现在仍称为"启用本机代码调试",仍在项目属性的"调试"选项卡中. (3认同)
  • 请注意,如果您的启动项目使用另一个实际调用C++ DLL的C#DLL项目,则启动项目还必须启用"启用非托管代码调试". (2认同)
  • 在Solution Explorer中选择解决方案.选择>菜单|工具|选项|调试|常规和取消选中"要求源文件与原始版本完全匹配" (2认同)