设置:
在 C# 程序中,我从 .NET C++/CLI dll 调用函数。 此 dll 具有与 native C++ 库的静态链接。 Visual Studio 2017 是环境。
设置:
- 两个项目都设置了调试信息格式“Program Database (/Zi)”。
- dll 项目已设置生成调试信息“生成调试信息 (/DEBUG)”。
- 我还为 dll 设置了配置文件“Yes (/PROFILE)”。不确定它的作用。
生成 .pdb 文件,放置在二进制文件的文件夹中,并在启动程序时加载,并附带 Visual Studio 2017 Perfomance Profiler。
- 我在 dll 中看到一些顶层调用,但似乎不完整并且 达不到 native C++ 代码。
- 我可以单步执行 native C++ 代码 带调试器。
- 调试器工具“Very Sleepy”给出了正确的 输出。
一位同事说幽灵修复结合我使用 Win7 的事实引入了这个问题。 ( https://superuser.com/questions/1287914/visual-studio-2013-profiler-chrashes-and-system-restarts-reboots )
我不确定我的问题是否与此有关...?我忘记了一些设置吗?
最佳答案
幽灵修复(您在链接中发现)后,“采样”模式分析在 Win7 中不起作用。我碰巧有一台装有 vs2017 的 win10 机器,我正在其上开发 C++/CLI dll( native 代码中有很大一部分)。在 win10 机器上,当我使用 CPU 采样(启动一个使用我的 C++/CLI dll 的 C# exe)时,我得到了 exe 的采样数据,并且不知何故,低级调用(如 malloc),但不是我的任何 native 代码。我有信心这曾经有效(也就是说,我能够为我的 native 代码获取采样数据)。我可以使用 Release模式构建进入我的 native 代码调试。
我也想知道这是一个已知问题还是我只是缺少某处的设置。我会继续努力让这个工作或得到解释,如果我找到了,我会发回这里。
关于c++ - 附加到 C++/CLI dll 的性能探查器无法访问 native C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925852/