我有一个C#程序,我从中调用C ++中的一些函数/变量。 C ++程序本身运行正常,并进行检查。但是,当我构建这个DLL并将其用于C#时,接口代码中存在一些错误,导致我无法在C#中获得正确的结果。
最有可能的是,导出变量/导出函数会出现一些错误,并给出结果,我想检查一下。
我的主要问题是:我如何调试此DLL,例如通过设置断点等,然后通过查看我们可以为任何其他程序执行的结果来跟进?
答案 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