c++ - 分析一个 dll 插件

标签 c++ visual-studio visual-studio-2010 dll profiling

我想用 C++ 分析一个 dll 插件。我可以访问源代码(作为作者/维护者)并且可以修改它们(如果需要进行检测)。 我没有的是调用 dll 的主机程序的源代码/符号/等。我只有构建插件所需的 header 。 根据客户端的操作调用 dll。

分析代码的最佳方式是什么?将可执行文件“包装”在 dll 周围是不现实的,它也没有用,因为在插件中我从主机调用一些函数并且我需要分析这些路径,包装器会影响性能。

在 Kieren Johnston 的评论后进行编辑:理想情况下,我想像调试器一样挂接到加载的 dll(附加到正在运行的主机进程并根据需要在 dll 的某处放置断点).可能吗?如果没有,我需要再问一个问题来问为什么:-)

我使用的是 Visual Studio 2010 的 TFS 版本。

在 AIX 下为同一任务提供建议/答案的奖励积分(啊,多环境的乐趣!)。

最佳答案

这是可能的,尽管有点烦人。

  1. 将插件 DLL 部署到主机应用程序需要的位置
  2. 启动您的主机应用程序并验证它是否正在使用您的插件
  3. 创建一个新的性能 session
  4. 将主机 EXE 作为目标添加到第 3 步的 session 中
  5. 为您的 session 选择采样或检测
  6. 启动分析 session

在所有这些过程中,请保持您的插件解决方案处于加载状态,VS 应该会自动找到您的插件的符号。

关于c++ - 分析一个 dll 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105531/

相关文章:

c++ - 查看 Doxygen 文档中的 .cxx 文件和 .h 文件

visual-studio-2010 - “Unable to find manifest signing certificate in the certificate store” - 即使添加新 key

c# - MSB0001 : Internal MSBuild Error: Throwing from logger shutdown

c++ - win32 hInstances 是唯一的吗?

c++ - 如何在.cpp中实现属于非模板类的模板函数

c# - 如果一个应用程序中的多个线程调用单个 DLL 会发生什么

c# - 无法在 ML.NET 中加载文件或程序集 System.Numeric.Vectors

javascript - 如何使用纯javascript制作简单的图片库

visual-c++ - 奇怪的 VC10 链接器错误

c++ - 了解 strtok_s