有没有办法在Delphi中仅跟踪项目源?

2024-01-20

我正在使用 Delphi 2010,我想知道是否有一种方法可以跟踪项目中的代码,而无需跟踪对包含的 VCL 的调用。

For example - you put in a breakpoint and then use Shift+F7 to trace through line-by-line. Now you run into a call to some lengthy procedure in a VCL - in my case it's often a Measurement Studio or other component that draws the doodads for a bunch of I/O, OPC, or other bits. At any rate, what happens is that the debugger hops out of the active source file, opens the component source, and traces through that line by line. Often this is hundreds or thousands of lines of code I don't care about - I just want to have it execute and return to the next source line in MY project.

显然,您可以通过在外部调用的每个实例周围设置断点来实现此目的,但通常断点太多,无法实现这一点 - 每次我想单步执行一段代码时,我都会花一个小时设置一百个断点。

有没有可以做到这一点的设置或工具?允许人们跟踪项目内的代码,同时默默地执行项目外部的代码吗?


调试器不会单步执行没有调试信息的单元,因此目标是使编译器忽略您不感兴趣的单元中的调试信息。

将您的库单元放入单独的库项目中。这使您能够为这些单元进行单独的编译设置,而不会影响your项目。在不启用调试信息的情况下编译库。然后从您的项目中删除这些库单元。您可以继续使用它们,但它们将不再属于您的项目。

这里的一个重要方面是DCU 应驻留在与源代码不同的目录中。如果编译器找到 DCU 并且碰巧在同一文件夹中看到源代码,那么当您确实不希望重新编译该代码时,它可能会重新编译该代码。将项目的“DCU 输出文件夹”设置为默认值以外的文件夹。

要真正做到这一点,您可以执行 VCL 的操作并编译两个不同版本的库。编译一个带调试信息的,一个不编译的,并将编译后的文件放在不同的目录中。将包含调试版本的目录添加到 Delphi 配置中;那里应该已经列出了一个包含 Delphi 提供的调试 DCU 的文件夹。

当您设置两个不同的版本时,您可以自己选择是否要单步执行库代码。只需切换“使用调试 DCU”选项在您的项目设置中。当您切换该设置时,Delphi 将自动在搜索路径中添加和删除调试版本文件夹。


请注意,即使您的库单元有一个单独的库项目,您也不需要链接或分发该项目生成的 DLL 或包。您可以继续直接在 EXE 项目中使用 DCU 文件。您只需设置单独的项目,以便可以为这些单元选择不同的编译设置。将库项目的 DCU 输出文件夹添加到 EXE 项目的搜索路径中,您可以直接继续使用这些单元,而无需分发库项目的 DLL 或包。

IDE 可能会尝试自动将新目录添加到搜索路径。不要容忍这样的事情。如果其中有 IDE 为您添加的源目录,而您不希望它存在于此,请随时将其删除。 IDE 只是想提供帮助,但它不知道您计划拥有单独的源文件夹和编译文件夹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在Delphi中仅跟踪项目源? 的相关文章

随机推荐

  • Laravel 模板/控制器在保存时未更新

    我正在 OS X 上运行 Laravel 4 作为一个简单的应用程序 基本上 在我保存对这些文件的更改后 对控制器和模板的更改在很长一段时间内不会生效 例如 我向 app views index blade php 添加一个单词 并且在不断
  • javascript bookmarklet 隐藏当前网页中的所有图像?

    我想创建一个简单的书签 隐藏我正在浏览的当前网站的所有图像 javascript body getElementsByTagName img style visibility hidden 那不行吗 我想知道我做错了什么 感谢您的帮助 您需
  • 当应用程序长时间进入后台时,Firestore 监听器被杀死

    在我的应用程序中 每当用户登录时 我都会监听 Firestore 查询 应用程序进入后台一段时间后 监听器将被取消 并且客户端不会收到任何新更改的通知 如何知道监听器是否已被 SDK 取消 处理这个问题的正确方法是什么 在大多数操作系统上
  • 在生产服务器中拥有 Git 存储库是一个坏主意吗

    我们有 Windows Server 2012 Apache PHP 和 MySQL 服务器有点乱 我想要的事情之一是跟踪代码的更改 通常我不会在服务器上设置 Git 而是在本地计算机上进行开发 然后使用 SSH 将更改部署到生产服务器 然
  • 在 WPF 中使用枚举作为依赖属性

    我尝试在自定义控件中使用枚举类型作为依赖属性 但总是收到错误 public enum PriceCategories First 1 Second 2 Third 3 Fourth 4 Fifth 5 Sixth 6 public stat
  • Blackberry Storm 模拟器 - TouchGesture 事件未触发,如何让滑动功能正常工作?

    我一直在玩 Storm Emulator 和 4 7 JDE 我一生都不知道如何在模拟器中触发手势事件 下面是 RIM 示例应用程序 EmbeddedMapDemo 的触摸事件代码 这看起来很简单 但 touchGesture getEve
  • 是否可以使用一个重载运算符来实现另一个运算符重载?

    例如 如果我重载了 运算符 myClass operator const myClass rhs 并且还重载了 运算符 myClass operator const myClass rhs 两个运营商都工作正常 我可以在 运算符重载中使用这
  • asp.net mvc 中数据库上下文类的用途是什么

    我是 MVC 新手 并且已经完成了一些教程来掌握它的窍门 但在其中一些教程中我遇到了一个带有 DbContext 类的示例asp net mvc5 与 EF6 教程 https www asp net mvc overview gettin
  • 使用 i18n 进行 Vuelidate:在区域设置消息中找不到密钥

    因此 在我的 i18n validators js 文件中 我想将带有翻译消息的验证器导出为我选择的语言 并在我的 vue 组件中使用它们来验证表单 My code import as VuelidateValidators from ht
  • C# 读取xml文件

    我正在尝试拉
  • 如何绑定内联匿名函数?

    我在尝试着bind ie bind this 内联匿名回调函数object如何做呢 简化示例 var object property function this id abc this binds to the object aFuncti
  • D3:使用 d3.max 获取包含对象?

    我有以下数据 一个对象数组 var data x 0 y0 0 y 100 x 1 y0 0 y 150 x 2 y0 50 y 100 x 3 y0 50 y 150 我想找到之间差异最大的对象y and y0 使用 D3 我可以这样做以
  • Netbeans 中的拆分窗口

    我正在尝试拆分我的窗口 以便我可以在 1 个屏幕上拥有 2 个不同的类或其他内容 但它只会拆分同一类 文件 其他内容的窗口 我已经使用 netbeans 多年了 但仍然无法做到这一点 这可能吗 您没有具体提及您正在使用哪个版本的 NetBe
  • SQL Server SMO - 备份 - 如何确定失败/成功?

    如果使用 SMO 执行备份 成功完成后 我测试 SqlError 是否为 null 认为备份已完成且没有错误 但是 正如您所看到的 它实际上返回了 0 类编号 3014 的错误 这意味着成功 所以问题是 问 如何确定备份是否成功完成 以及如
  • 与 jasperReports 完全混淆

    在开始工作前两天 我才刚刚接触 jasper 我下载了 jasperReports 和 iReports 并在我的 salesforce 帐户中安装了 iReports 并安装了 jasper4salesforce 但没有找到任何 jasp
  • jQuery - 内联调用函数

    我正在尝试将一个变量传递给内联 jQuery 函数 即 使用onMouseOver function 在实际链接内 这是图像映射中的区域标记 仅当我将其放在之前时才会调用该函数 document ready function 行 但这样做会
  • 大文件上传(WebException:连接意外关闭)

    UPDATED 看帖子 3 https stackoverflow com questions 1060966 big files uploading webexception the connection was closed unexp
  • android manifestPlaceholders - 如何使用布尔值

    我创建的清单占位符如下所示 manifestPlaceholders appDrawerName Staging canExport true 我正在尝试使用它来设置活动的以下导出属性
  • Forge Viewer 在多模型上下文中选择

    我们的扩展目前利用viewer select 和模型中的dbId 列表 我们的客户希望在同一查看器中看到辅助模型 我们让他们能够在加载第一个模型后加载参考模型 然而 我们遇到了多个模型的问题 观众从其中一个模型中进行选择以外当我们调用vie
  • 有没有办法在Delphi中仅跟踪项目源?

    我正在使用 Delphi 2010 我想知道是否有一种方法可以跟踪项目中的代码 而无需跟踪对包含的 VCL 的调用 For example you put in a breakpoint and then use Shift F7 to t