5

我遇到了一个大问题,即在 Delphi 6 DirectShow DLL 中没有命中断点。我将在 IDE 中加载 DLL (AX) 并使用 Graph Edit 作为主机程序运行它,并且不会触发任何断点。我尝试将 FastMM4 DLL 移动到项目目录,完全删除 FastMM4,打开和关闭调试 DCU,清理项目目录,取消注册和重新注册 DLL,我能想到的一切。没有任何效果。每次我运行主机程序时,我都会在事件查看器中看到我的 DLL 加载并显示“无调试信息”消息。然后在绝望的谷歌搜索中,我发现了一篇 C++ Builder 的帖子,建议尝试“远程调试符号”链接器选项:

Project -> Options -> Linker (Tab) -> Exe and DLL options (group box) -> "Include Remote Debug Symbols" (勾选)

突然我的断点开始被击中。以下是我的问题:

1)为什么这样做?是因为这个选项还是因为这个选项触发了其他一些修复问题的编译器/链接器操作?我想知道,这样当它再次发生时,我可以可靠地解决这个问题。

2) 远程调试符号是否是恶意程序员可以用来深度跟踪我的程序的东西?换句话说,如果它们随意放置,是否会带来安全风险?

4

1 回答 1

5

1)这是因为选项。如果没有调试符号信息,您的 IDE 不知道在哪里设置断点。调试 DCU 与它无关——该选项链接到一组不同的 VCL DCU,其中包含调试信息,因此您可以设置断点。有用的提示:根据 Delphi 的版本,这些 DCU 实际上并不总是与其调试符号同步。

2) 调试符号/映射文件不应在版本中发布,尤其是在程序处理的信息以任何方式敏感的情况下。这适用于任何编程语言。

如果您需要在软件发布后对其进行诊断,请结合异常、错误和断言处理,以便为您提供足够的信息来从日志中对错误进行分类。

于 2012-01-24T23:43:20.783 回答