首页> 外文会议>The Sixteenth IEEE International Conference on Computational Science and Engineering >Sipping from the Firehose: How to #x0022;Grok#x0022; Gigabytes of Trace Debug Data
【24h】

Sipping from the Firehose: How to #x0022;Grok#x0022; Gigabytes of Trace Debug Data

机译:从Firehose ipp饮:如何“提高”千兆字节的跟踪调试数据

获取原文
获取原文并翻译 | 示例

摘要

Long gone are the days when you could use a logic analyser on a CPU to find out what it is executing. Caches, out-of-order memory accesses and especially multi-processing all effectively hide the sequence of instructions that the CPU is working on. Traditional debug techniques with breakpoints and single-stepping help, but require interactive sessions at human rates rather than the gigahertz rates of today's processors. To help this situation, many of today's sophisticated processors come with a side-port (e.g. BDM, ETM, Nexus or Aurora) that the CPU can use to communicate what it is doing in real-time, at its full rate. By using a debug probe to capture this stream of information, the activities of the CPU can be traced. This trace data can be post-analysed to determine what the processor did, and even what memory values were processed. The problem is that at gigahertz processing speeds, that's many gigabytes of data every second: what techniques are available to help understand this firehose of data? This trace data is one-dimensional: linear over time. So if a programming bug occurred during the trace capture, it is possible to see the sequence of steps leading up to it. Indeed, it is also possible to work backwards through the data looking for the exact condition that started the bug. The data is also suitable for use in profiling and coverage analysis: how often or whether certain routines were executed, and how long they took - all without instrumenting the code by adding time-wasting in-band profiling code, or by using statistical sampling techniques. Useful as this is, even more information can be gleaned by adding a second dimension: depth. More for optimising code than debugging it, being able to analyse call stacks can give insights into the (perhaps unexpected) way that the code base functions. However, to see code two-dimensionally requires a different view from the traditional source-based one: a graphical view, one that represents the call stack o- er time. This article explores these techniques, and explains how, through visualisation, the way a system is working (or not) can be more fully understood. Real-life examples of how using trace data helped debugging are also provided.
机译:可以在CPU上使用逻辑分析器找出其执行内容的日子已经一去不复返了。高速缓存,无序的内存访问,尤其是多处理,都可以有效地隐藏CPU正在处理的指令序列。具有断点和单步帮助的传统调试技术,但需要以人工费率而不是当今处理器的千兆赫兹率进行交互式会话。为了解决这种情况,当今许多复杂的处理器都带有一个侧端口(例如BDM,ETM,Nexus或Aurora),CPU可以使用该侧端口以全速率实时通信其正在做的事情。通过使用调试探针捕获此信息流,可以跟踪CPU的活动。可以对该跟踪数据进行后期分析,以确定处理器的工作方式,甚至确定要处理的内存值。问题在于,以千兆赫的处理速度,每秒每秒有数千兆字节的数据:有哪些可用的技术来帮助理解这种数据量?此跟踪数据是一维的:随时间呈线性。因此,如果在跟踪捕获期间发生了编程错误,则可以看到导致该错误的步骤顺序。确实,也有可能向后浏览数据以寻找导致错误的确切条件。数据还适用于性能分析和覆盖率分析:某些例程执行的频率或是否执行以及花费了多长时间-所有这些都无需通过添加浪费时间的带内性能分析代码或使用统计采样技术来对代码进行检测。这样做很有用,可以通过添加第二个维度:深度来收集更多信息。比起调试它,更多的是优化代码,能够分析调用堆栈可以洞悉代码库的运行方式(也许是意外的)。但是,要以二维方式查看代码,则需要与传统的基于源代码的视图不同的视图:图形视图,该视图代表时间上的调用堆栈。本文探讨了这些技术,并解释了如何通过可视化更全面地了解系统的工作方式(或不工作)。还提供了有关如何使用跟踪数据帮助调试的现实示例。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号