c++ - 附加到 C++/CLI dll 的性能探查器无法访问 native C++ 代码

标签 c++ visual-studio-2017 c++-cli profiler

设置:

在 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/

相关文章:

c# - 如何将旧的 WinForms 项目迁移到新的 VS2017 项目格式

visual-studio-2017 - SSDT Project 关于无效子元素 IncludeCompositeObjects 的错误警告

c++ - 如何释放在 C++ 中加载的 DotNet 程序集

.net - 如何在 C++.net 中将 gcroot<Object^> 转换为 IMyInterface?

C++ 模块架构,模块循环依赖

c++ - 既然 "this"关键字在 C++ 中通常是不必要的并且被省略,那么为什么在这个例子中它是必需的?

c++ - Linux 上的编译器 (GCC) 交叉编译(到 Windows)——如何在非源目录中构建它?

c++ - 如何找出信息存储的可分辨名称以提供给 IExchangeManageStore::GetMailboxTable?

c++ - 代码执行无法继续,因为找不到 cpprest_2_10.dll

.net - 如何从 ArrayList 转换为 cli::array?