我遇到了一个很大的问题,断点没有被Delphi 6 DirectShow DLL击中。我将在IDE中加载DLL(AX)并使用Graph Edit作为Host程序运行它,并且不会触发任何断点。我尝试将FastMM4 DLL移动到项目目录,完全删除FastMM4,打开和关闭Debug DCU,清理项目目录,取消注册并重新注册DLL,我能想到的一切。没有任何效果。每次运行主机程序时,我都看到我的DLL加载了事件查看器中的“无调试信息”消息。然后在绝望的谷歌搜索中,我找到了一篇推荐C ++ Builder的帖子,建议尝试“远程调试符号”链接器选项:
项目 - >选项 - >链接器(标签) - > exe和DLL选项(组框) - > “包括远程调试符号”(选中它)
突然间,我的断点开始被击中。以下是我的问题:
1)为什么这样做?是因为该选项还是因为此选项触发了其他一些修复了其他编译器/链接器的操作?我想知道所以我可以在将来再次发生时可靠地解决这个问题。
2)远程调试符号是否是恶意程序员可以用来深入跟踪我的程序的东西?换句话说,如果他们躺在身边,他们是否存在安全隐患?
答案 0 :(得分:5)
1)这是因为选项。如果没有调试符号信息,IDE将无法设置断点的位置。调试DCU与它无关 - 该选项链接在包含调试信息的另一组VCL DCU中,因此您可以设置断点。有用的提示:根据Delphi的版本,这些DCU实际上并不总是与它们的调试符号同步。
2)调试符号/映射文件不应该在发行版中出现,特别是如果程序处理的信息以任何方式敏感。这适用于任何编程语言。
如果您需要能够在软件发布后对其进行诊断,请合并异常,错误和断言处理,以便为您提供足够的信息来对日志中的错误进行分类。