【问题标题】:How can I profile pure dll?如何分析纯 dll?
【发布时间】:2011-01-26 20:58:41
【问题描述】:

我有创建 dll 的项目。这些 dll 稍后由特殊插件系统 blue-sky 从 python 调用。所以在这个项目中构建可执行文件非常困难,但我需要分析。有没有可以使用纯 dll 的分析器?

我尝试过 Intel Amplifier、Microsoft VS2008 profiler,但它们不起作用。我也试过 Very Sleepy,但它的功能有限。

【问题讨论】:

    标签: c++ python dll profiling


    【解决方案1】:

    如果您的 dll 是由 Python 加载的,那么您需要分析 Python 进程。使用 Microsoft 分析器,只要存在所有 .pdb 文件,它就应该解析 dll 中的符号。另一种选择是创建一个可执行文件来加载和调用您感兴趣的函数,然后分析所述可执行文件。

    例如您可能有一个“python.exe”进程正在运行正在加载 .dll 的 python 程序,您可以通过以下方式将 Visual Studio 命令行分析器附加到它:

    vsperfcmd /attach:"python.exe"

    【讨论】:

      【解决方案2】:

      您无法分析未运行的代码——这就是分析的定义。您将需要构建可以运行的东西(可执行文件)链接到 DLL 并使用它。

      【讨论】:

      • 实际上来自这些 dll 的代码正在运行,因此有可能进行分析,不是吗?构建链接到 DLL 的东西非常困难,因为我必须将所有插件加载器系统从 python 重写为 C/C++。
      • 其实并不难。操作系统控制 DLL 加载。当 Windows 加载你的 DLL 时,它会检查依赖项并加载它们。只需将要加载的 DLL 传递给链接器。您甚至不需要从该 DLL 调用函数; Windows 仍将调用其DllMain()
      • 没那么简单。 DLL 应按特定顺序加载,因为它们将其类型导出到该系统。我不想详细说明,但这确实不简单。有兴趣可以查看:sourceforge.net/projects/blue-sky
      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 2015-02-25
      • 2012-10-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多