解决通信计时问题(C++ windows 应用程序)
Posted
技术标签:
【中文标题】解决通信计时问题(C++ windows 应用程序)【英文标题】:Troubleshoot communication timing issues (C++ windows app) 【发布时间】:2011-05-10 19:04:16 【问题描述】:我有一个与嵌入式设备通信的“旧版”(为我们解决此问题)应用程序 - 它由外部 OEM 应用程序驱动,该应用程序使用此“应用程序”刷新汽车的电子控制单元 (ECU) -> 通信通过 USB 端口连接到汽车 ECU -> 一些通过设备 -> 汽车 ECU。
那里似乎存在一些时间问题(呼叫/响应通常不能超过 100 毫秒),我想知道你建议什么来衡量这一切。我在想这类问题的记录器当然会有所帮助,但据我了解/看到,还涉及很多线程和可能的同步。当然,线程可能会带来一些问题。有没有办法让我对与线程/同步相关的时间有一个“整体”的看法?例如,如果线程存在一些同步问题,那么探查器(对数据进行采样)是否可以告诉我等待/同步所涉及的时间?我使用 Visual Studio 2008,但我认为如果有更多帮助,我也可以使用 VS 2010。
您是否为此推荐 Visual Studio Profiler(需要团队版?)还是有其他东西(可能也是免费的)? 谢谢
-吉塔
【问题讨论】:
你能在调试器下运行代码吗? Then you could try this. 100 毫秒是一个巨大的时间......我认为你正在追逐一些大事,只是在有趣的地方放置一些日志应该足以找出问题所在...... 6502,通过记录我也打算解决这个问题。完成了内存记录器(仅在“分析”/程序结束时刷新信息)。希望它也能帮助我理解代码以检测热点。 【参考方案1】:这个问题已经有一段时间了。对此的解决方案是:“完成一个内存记录器(仅在“分析”/程序结束时刷新信息)。” 回顾过去,这已经足够好,但现在 Windows 上注重性能的方法是使用 Windows 事件跟踪 (ETW),因为这将日志记录提供程序与事件跟踪信息的使用者分离,甚至导致日志记录崩溃应用程序不会影响日志记录(直到实际崩溃产生的点)。它还具有其他性能优势,据说它能够处理生产者应用程序生成的数千个事件,而不会出现明显的性能下降。
【讨论】:
以上是关于解决通信计时问题(C++ windows 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章