1. 在IDE中设置断点、使用监视等来进行调试。 2. 在IDE中使用事件日志进行调试。我从this page中获取了一些好的信息,并进行了修改,添加了时间戳和程序调用/返回时的缩进/取消缩进,以便更快地查看嵌套调用。是否有更好的方法呢? 3. 使用性能分析器。 4. 还有其他的吗?例如MadExcept等。
(我目前正在使用Delphi 7)
Delphi集成调试器在Delphi 7中已经足够强大,可以处理大多数调试任务。它还可以远程调试应用程序。无论如何,有时您可能需要跟踪不同类型的问题:
Delphi 7的IDE非常适合入门,只有在遇到无法用现有工具解决的问题时才考虑第三方工具:
第三方工具在你需要诊断客户端电脑上的问题时很有帮助(客户端电脑上没有Delphi IDE)。如果你能在自己的计算机上重现这个问题,你就可以只用IDE,不需要任何额外的免费或付费工具。
我并不是说第三方调试工具没有用处:它们有用,但我会等到我能清楚地看到任何工具的好处,然后再决定是否使用它。在我看来,没有所谓的免费软件:即使你不付费,也需要时间学习如何使用它,并对你的程序和工作流程进行更改。
对于更大的工作,可以使用AQTime。
针对特定代码的较便宜解决方案是通过Free Pascal运行它(启用“随机化本地变量选项”),然后通过valgrind运行它。我已经通过这种方式验证了我的大部分流媒体代码(其中包含大量向后兼容结构)。
另一个有趣的开关是-CR,验证对象方法调用。它基本上会检查每个
TXXX(something).callsomething
转换为
if something is txx then
TXXX(something).callsomething
else
raise some exception;
特别是在具有复杂树结构的代码中,这可以提供一些宝贵的信息。
正常的Pascal语言检查(范围、I/O、溢出、堆栈等,也称为-Criot)也很有用,并且在Delphi中也可用。
某些范围检查错误(通常是循环边界),可以在(beta)FPC 3.0.x+中静态检测,将导致编译错误。
不确定为什么您想要升级以调试问题。是的,新的IDE提供了更多功能来帮助您调试某些内容,但考虑到您之前关于如何在程序挂起时调试程序的问题,我更愿意建议使用像CodeSite或SmartInspect这样的良好日志记录解决方案。它们提供比基于事件日志的自制解决方案更多的灵活性和功能,并且不需要您像IDE一样逐步执行代码(这会影响多线程问题的时间)。
更新
抱歉,没有理解FOSS代表免费和开源软件。CodeSite和SmartInspect都不是。对于免费解决方案,您可以查看Jedi工具系列中的日志记录功能。
Rad Studio XE 包括 CodeSite 的轻量版和 AQTime,两者结合起来是非常有吸引力的改进。
你可以使用 JCL Debug、MadExcept 和其他分析和日志记录工具,但对于它们各自的任务来说,CodeSite 和 AQTime 是最好的两个。