gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:18:03 29 4
gpt4 key购买 nike

我正在调试使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com