附加到 C++/CLI dll 的性能分析器无法达到本机 C++ 代码

lar*_*ars 7 c++ profiler c++-cli visual-studio-2017

设置:

在 C# 程序中,我从 .NET C++/CLI dll 调用函数。该 dll 与本机 C++ 库具有静态链接。Visual Studio 2017 就是这样的环境。

设置:

  • 这两个项目都设置了调试信息格式“程序数据库(/Zi)”。
  • dll 项目已设置生成调试信息“生成调试信息 (/DEBUG)”。
  • 我还为 dll 设置了配置文件“Yes (/PROFILE)”。不知道它有什么作用。

生成 .pdb 文件,将其放置在二进制文件的文件夹中,并在附加 Visual Studio 2017 性能分析器的情况下启动程序时加载。

  • 我在 dll 中看到一些顶级调用,但它似乎不完整,并且未达到本机 C++ 代码。
  • 我可以使用调试器单步执行本机 C++ 代码。
  • 调试器工具“Very Sleepy”给出了正确的输出。

一位同事表示,幽灵修复加上我使用 Win7 的事实导致了这个问题。(https://superuser.com/questions/1287914/visual-studio-2013-profiler-chrashes-and-system-restarts-reboots

我不确定我的问题与此有关...?我是否忘记了某些设置?

Tro*_*erg 5

幽灵修复后(您在链接中发现),“采样”模式分析在 Win7 中不起作用。我碰巧有一台装有 vs2017 的 win10 机器,我正在其上开发 C++/CLI dll(其中大部分是本机代码)。在 win10 机器上,当我使用 CPU 采样(启动使用我的 C++/CLI dll 的 C# exe)时,我会获取该 exe 的采样数据,并且以某种方式获取低级调用(如 malloc)的采样数据,但不会获取任何本机的采样数据。代码。我相信这曾经有效(也就是说,我能够获取本机代码的采样数据)。我可以使用发布模式构建进行本机代码调试。

我也想知道这是否是一个已知问题,或者我是否只是在某个地方缺少设置。我将继续尝试使其正常工作或获得解释,如果我找到了,我会发回此处。