【发布时间】:2011-11-12 15:53:06
【问题描述】:
我想在 C++ 中分析一个 dll 插件。我可以访问源(作为作者/维护者)并且可以修改它们(如果需要进行检测)。 我没有的是调用 dll 的主机程序的源/符号/等。我只有构建插件所需的标题。 该 dll 在来自客户端的操作时被调用。
进行代码分析的最佳方法是什么?将可执行文件“包装”在 dll 周围是不现实的,而且它没有用处,因为在插件中我从主机调用一些函数并且我需要分析这些路径,包装器会影响性能。
在 Kieren Johnston 的评论后编辑: 理想情况下,我想像调试器一样挂接到加载的 dll 中(附加到正在运行的主机进程并根据需要在 dll 中的某处放置断点)。是否可以?如果没有,我需要问另一个问题来问为什么:-)
我使用的是 Visual Studio 2010 的 TFS 版本。
在 AIX 下为同一任务提供建议/答案的奖励积分(啊,多环境的乐趣!)。
【问题讨论】:
-
您使用的是什么分析器?您是否只是尝试运行主机程序?如果你有插件的符号,它应该仍然可以工作..
-
VS2010 内置的分析器。我将尝试解开主机程序的启动过程,但这并不容易,因为它需要各种其他程序/连接。这不是一个简单的 foo.exe ......这需要我一点时间,所以我想检查是否有某种方法可以“挂钩”到加载的 dll 中,就像调试器能够做到的那样。
-
在您的解决方案中为您的 dll 启用分析器,将所有程序树复制到您的可执行文件夹中,或者制作 vs 将您的 dll 放入程序文件夹中。将可执行文件名设置为 foo.exe 并运行探查器...
-
@neagoegab “复制可执行文件夹中的所有程序树”是什么意思?如果我明白你的意思,我应该能够通过“启用分析器”将 dll 链接到可执行文件的名称。您能否拼出一个完整的答案,以便我为您投票?
标签: c++ visual-studio visual-studio-2010 dll profiling