delphi - DLL 断点没有被 "remote debug symbols"选项命中,为什么以及这些有任何安全风险吗?

标签 delphi debugging dll delphi-6

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

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

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

1) 为什么这有效?是因为该选项还是因为该选项触发了其他一些编译器/链接器操作来修复问题?我想知道,以便将来再次发生此问题时可以可靠地解决该问题。

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

最佳答案

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

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

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

关于delphi - DLL 断点没有被 "remote debug symbols"选项命中,为什么以及这些有任何安全风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994221/

相关文章:

c - 如何包含包装到新 dll 中的 dll 文件?

delphi - list 和 GetVersionEx

delphi - 如何读取从 iDTCPServer 发送的内存流中的非拉丁字符?

delphi - 如何在Delphi中发送广播消息

jquery - 为什么我在 html 中的文本后得到黑色间隔符?

c++ - 从 vb 调用非托管 c++ dll 中的函数

delphi - 将 Hi-Ansi 字符转换为等效的 Ascii 字符 (é -> e)

android - 如何检查sqlite数据库中的表是否存在,如果不存在则创建一个并插入数据

php - PHP解析/语法错误;以及如何解决它们

c++ - 将 TLB 文件提交到存储库