在 Visual studio 2017 年检查非托管 C++ objects/variables

Inspect unmanaged C++ objects/variables on Visual studio 2017

所以我有一个引用 C++ dll 的 C# 桌面应用程序。这个dll项目是别人开发的,不能在visual studio上编译,我用参数-DCMAKE_BUILB=Debug的NMake来生成.dll & .PDB文件。我复制了 C# 项目引用文件夹中的文件,并在项目属性中 启用了非托管代码调试 。所以我实际上能够从 dll 中调试非托管代码。我的问题是我无法检查任何对象,也无法检查非托管代码端的变量。 visual studio 上下文检查器不显示 当我将鼠标放在 objects/variables 上时 & 当试图添加一个间谍时它并没有更好。 我需要从非托管代码 中查看 objects/variables 的值,以确保它没有做错任何事情。

注意:我的一个同事已经在这里开了一个帖子How add spy on Visual studio using unmanaged code 但遗憾的是,该线程因缺乏细节而关闭,因此我尝试添加更多细节来描述该问题。 请不要关闭这个

Inspect unmanaged C++ objects/variables on Visual studio 2017

建议

更新 1

确保您已安装 C++ 开发C# 开发 工作负载VS 安装程序。这就是所有的前提。

1)当你引用dll的路径时,确保pdb文件已经存在于引用文件夹(你引用dll的文件夹)下,然后use DLLImport node导入c++函数。

2) Tools-->Options-->Debugging-->General-->勾选选项Used Managed Compatibility Mode

3) 右键单击​​您的 C# 项目-->属性---> 调试-->选中选项 启用本机代码调试

,选中Build.

下的Allow unsafe code选项

4) 此外,如果您的 c++ dll 是使用 x64 平台构建的,您也应该使用 x64 平台来调试您的 c# 主项目。

另外,您可以参考了解更多详细信息。