如何获得Delphi程序的CPU时间?

如何获得Delphi程序的CPU时间?,delphi,debugging,time,delphi-xe2,Delphi,Debugging,Time,Delphi Xe2,我试图解决的问题:我的程序使用System.Win.ScktComp.tserverssocket通过以太网与另一个本地进程通信。从本地进程接收数据包和发送响应之间的间隔是100ms——这不会花这么长时间。我正试图用调试器一步一步地检查我的程序,看看这100毫秒花在了哪里 问题是,如果我在调试器中获得当前时间,它显然会计算它在调试器暂停状态下花费的时间。另一个问题是,我的应用程序的相关部分是TTimer和事件驱动的,因此当例程返回时,您不确定下一步将调用哪个例程 我的尝试:我可以放弃使用调试器和

我试图解决的问题:我的程序使用
System.Win.ScktComp.tserverssocket
通过以太网与另一个本地进程通信。从本地进程接收数据包和发送响应之间的间隔是100ms——这不会花这么长时间。我正试图用调试器一步一步地检查我的程序,看看这100毫秒花在了哪里

问题是,如果我在调试器中获得当前时间,它显然会计算它在调试器暂停状态下花费的时间。另一个问题是,我的应用程序的相关部分是
TTimer
和事件驱动的,因此当例程返回时,您不确定下一步将调用哪个例程

我的尝试:我可以放弃使用调试器和
打印
当前时间,就像all
OnTimer
过程和其他事件中一样


更好的解决方案:逐步使用调试器,随时随地获取CPU时间(不受调试器暂停时间的影响),以确定100毫秒丢失的位置。

我认为您没有正确的方法解决问题,我在评论中已经指出了这一点。撇开这一点不谈,您要求的功能是

我正试图。。。看看100毫秒的时间花在哪里


调试器不能很容易地告诉您这一点。你需要改用探查器,比如AQTime或类似工具,让它实时记录你的代码并报告结果,比如在特定函数和类方法上花费了多少时间。

不,在调试应用程序时尝试计时不会产生有意义的结果。使用探查器或一些日志代码对此进行检测。我会尝试一下procmon。启动Procmon,启动你的应用程序,完成你的事情,停止Procmon,打开工具->堆栈摘要,并在应用程序中向下钻取。(在过滤器菜单中启用高级输出)如果这不够细粒度,您可以使用(尽管学习曲线更陡峭),因为您使用的是Delphi XE2,您可以访问一些代码站点日志记录,通过计时来实现它,并且它对您的运行时间的增加应该可以忽略不计。这样,如果需要,您还可以查看所有输出的更多信息。使用高级记录来测量计时。通过OutputDebugString输出到日志系统。您可以这样做,但我怀疑它是否会给您带来很好的结果。你想怎么做就怎么做吧。我个人会使用仪器和日志记录。如果您希望在执行调试器时手动执行,则完全由您决定。