我想用 C++ 分析一个 dll 插件。我可以访问源代码(作为作者/维护者)并且可以修改它们(如果需要进行检测)。 我没有的是调用 dll 的主机程序的源代码/符号/等。我只有构建插件所需的 header 。 根据客户端的操作调用 dll。
分析代码的最佳方式是什么?将可执行文件“包装”在 dll 周围是不现实的,它也没有用,因为在插件中我从主机调用一些函数并且我需要分析这些路径,包装器会影响性能。
在 Kieren Johnston 的评论后进行编辑:理想情况下,我想像调试器一样挂接到加载的 dll(附加到正在运行的主机进程并根据需要在 dll 的某处放置断点).可能吗?如果没有,我需要再问一个问题来问为什么:-)
我使用的是 Visual Studio 2010 的 TFS 版本。
在 AIX 下为同一任务提供建议/答案的奖励积分(啊,多环境的乐趣!)。
最佳答案
这是可能的,尽管有点烦人。
- 将插件 DLL 部署到主机应用程序需要的位置
- 启动您的主机应用程序并验证它是否正在使用您的插件
- 创建一个新的性能 session
- 将主机 EXE 作为目标添加到第 3 步的 session 中
- 为您的 session 选择采样或检测
- 启动分析 session
在所有这些过程中,请保持您的插件解决方案处于加载状态,VS 应该会自动找到您的插件的符号。
关于c++ - 分析一个 dll 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105531/