如何调试DLL中的代码

时间:2012-02-27 08:48:13

标签: c# c++ wpf visual-c++ dll

我有一个C#程序,我从中调用C ++中的一些函数/变量。 C ++程序本身运行正常,并进行检查。但是,当我构建这个DLL并将其用于C#时,接口代码中存在一些错误,导致我无法在C#中获得正确的结果。

最有可能的是,导出变量/导出函数会出现一些错误,并给出结果,我想检查一下。

我的主要问题是:我如何调试此DLL,例如通过设置断点等,然后通过查看我们可以为任何其他程序执行的结果来跟进?

3 个答案:

答案 0 :(得分:2)

如果要调试DLL,则应该在C ++环境中工作,在c ++代码中添加断点,但使用c#生成的可执行文件。

答案 1 :(得分:2)

假设您有本机(C ++)DLL的源代码和调试符号,您可以检查托管(C#)EXE项目的“调试”选项卡上的“启用非托管代码调试”选项,然后设置断点,像往常一样在C ++代码中检查变量等。您可以将C ++项目添加到解决方案中,或者只打开一个C ++源代码文件并在那里设置断点。

答案 2 :(得分:0)

调试此类场景的最佳方法是使用Visual Studio混合模式调试(通过 devenv / debugexe yourapp.name.exe 命令)或使用Windbg + SOS扩展(更陡峭的学习)曲线,但这会显示更多信息,例如您在本机和托管代码中键入大小) 要了解如何使用Windbg + SOS,请参阅Mario Hewardt的高级.NET调试

注意,通常这些问题都是由     1)错误选择的C#数据类型与C ++ API一起使用     2)错误指定/未指定的函数调用约定     http://blogs.msdn.com/b/adam_nathan/archive/2003/05/21/56690.aspx