delphi - 断点命中时单元源代码与代码执行路径不匹配

标签 delphi debugging breakpoints

我正在调试使用 Delphi 6 Pro 的 DSPACK 代码库创建的 DirectShow 过滤器。当我在名为 BaseClass.pas 的特定单元中设置断点并开始跟踪时,执行点会跳转到源代码中的奇怪位置。这通常表明正在跟踪的源代码与编译到 Delphi 应用程序正在使用的包之一中的源代码不匹配。奇怪的是,它只是 BaseClass 单元,因为我已经跟踪了属于 DSPACK 代码库的其他单元,并且它们没有出现此问题。我没有使用运行时包。

我扫描了磁盘,只发现了一份 BaseClass.dcu 的副本,其修改日期与我上次构建该程序的日期相同。我没有修改该单元或属于 DSPACK 的任何其他单元的源代码。由于我的 Filter 是主应用程序的一部分,这表明 BaseClass.pas 将受到双重使用情况的影响,因为它用于构建 DSPACK 组件包 (dpk),并且也由我的主应用程序直接通过 TBCSource 对象引用我的过滤器来自。请注意,我确实尝试将单位 PAS 文件直接添加到我的项目中,但这并没有解决任何问题。

我还返回并重新打开每个 DSPACK 包文件并进行了完整的重新构建。这些都没有帮助。我还可以尝试其他方法来使源代码与 BaseClass 单元的编译镜像同步吗?或者是一个完全不同的问题,如果是的话,它是什么以及如何解决它?

最佳答案

有时,当从网页或其他来源复制/粘贴代码时,并且这些行不以 CR/LF 对结尾 (#13#100x0D0A,Windows 标准),但仅以 LF 结尾(#100x0A,通常以 *nix 系统结尾的行)或 CR (#130x0D,典型情况适用于 Mac OSX/iOS)。不正确的行终止符会使调试器感到困惑 - 这一直是过去几个 Delphi 版本的问题。

有时您可以通过使用记事本等文本编辑器打开源文件,进行一些无意义的小更改(例如插入然后删除空行),然后保存文件来解决此问题。

关于delphi - 断点命中时单元源代码与代码执行路径不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933593/

相关文章:

delphi - LookupSource 必须连接到 TTable 组件

delphi - "Incompatible types: method pointer and regular procedure"

德尔福2009?好的还是有问题?

java - 斐波那契堆问题

c++ - 仅当我的程序访问内存时,visual studio 中的数据断点才会中断

delphi - 重复查询大表的最快方法

javascript交互式调试(相当于python的pdb.set_trace())

debugging - 如何判断哪个任务死了?

ios - "Warning: Attempt to present * on * which is already presenting *"的断点

visual-studio - 如何在Visual Studio中添加运行时断点?