调试从C#调用的VC ++ 6 DLL

时间:2011-09-19 12:11:21

标签: c# dll interop pinvoke

我有一个用Visual Studio 6编写的旧DLL,我是用Visual Studio 2010编写的C#调用的。该DLL工作不正常,我想调试它。我怎样才能做到这一点?我有源代码项目,但无法看到我如何介入它。

注意:当我说“无法正常工作”时,对DLL的调用会成功,并且在失败之前它会通过DLL中的代码获得一点点,但我想确切地追踪到哪里。

3 个答案:

答案 0 :(得分:4)

在MSDN上描述了调试DLL的技术here。您需要从Visual Studio 6(即开发DLL的工具)执行此操作,因此术语将会更改。但原则保持不变。

答案 1 :(得分:2)

只要您拥有带有相应二进制文件和源的PDB文件,就可以在.NET进程上附加VS6调试器。但是,您只能在DLL代码上中断。

如果选中“允许非托管调试”标志,则附加另一个VS +将起作用,但调试器可能未加载符号。重新编译DLL将解决最后一个问题。

答案 2 :(得分:2)

打开Visual C ++ Dll项目,在需要的地方设置断点。在Project属性,Debug,Executable for debug session中,键入使用此Dll的.NET可执行文件。开始调试(Go)。调用VC ++函数时,调试器会中断。使用这种方式,您只能调试非托管VC ++代码。

另一种方法是在混合调试模式下从.NET客户端开始调试。将VC ++项目添加到解决方案并重建它以调试托管代码和非托管代码。