实时USB类级解码
背景技术:通用串行总线(USB)分析器由USB装置、软件(例如,驱动程序)、固件等的制造商及其它开发人员用于监测和分析通用串行总线(USB)上的通信。例如,可监测目标USB装置和该装置经由目标主机上的USB端口与其连接的目标主机之间的通信,以确保该装置按照可适用USB标准和协议与目标主机正确地通信,而且反过来也是。硬件USB分析器通常包括:具有第一组连接器的独立或其它硬件装置,该组连接器使分析器能够被连接以至于能够观测目标USB装置与目标主机之间的业务;用于将在被监测的USB连接上观测到的信号解码为USB分组的硬件和/或固件;以及使分析器能够连接到分析PC并且向分析PC进行转发的硬件、逻辑和/或外部连接器。USB基本规范定义管理USB总线上的通信的协议。装置类代码被定义成使USB装置能够将自己识别为一个或多个装置类的成员,例如,通过将相关联的USB类代码和/或装置描述符信息包含在该装置在初始连接时传送给主机的“枚举”信息中。装置类可具有一个或多个子类级,以及这些一个或多个子类级的每个可具有与其相关联的一个或多个不同协议。对于每个USB装置类,类规范定义类特定协议。以这种方式,例如,与独立于USB装置开发的USB驱动程序应当是随装置可使用的,只要均符合可适用USB规范中所定义的相同类和/或装置特定协议。附图说明在以下详细描述和附图中公开了本发明的各个实施例。图1是示出硬件USB分析器的实施例的框图。图2是示出USB分析器的实施例的框图。图3是提供可与USB数据相关联的各个语义级的概念表示的框图。图4是示出分析PC的实施例的框图。图5是示出生成分析流的过程的实施例的流程图。图6是示出对所监测USB数据进行解码和显示的过程的实施例的流程图。图7是示出根据类级上下文来生成超时的过程的实施例的流程图。图8是示出被解码到类级的所监测USB数据的的实施例的框图。图9是示出循环缓冲器的实施例的框图。图10A是示出用于保存枚举和相关信息的过程的实施例的流程图。图10B是示出用于保存枚举和相关信息的过程的实施例的流程图。图10C是示出用于保存枚举和相关信息的过程的实施例的流程图。图11是示出用于实时类级解码的过程的实施例的流程图。图12是示出用于显示USB类级信息的过程的实施例的流程图。图13是示出用于USB事务级信息的过程的实施例的流程图。图14是示出在类级与事务级视图之间进行切换的过程的实施例的状态图。图15是示出在类级与事务级视图之间进行切换的过程的一个实施例的状态图。图16是示出类级视图的实施例的框图。图17是示出事务级视图的实施例的框图。具体实施方式本发明能够采用许多方式来实现,包括实现为过程、设备、系统、物的组合、在计算机可读存储介质上具体实施的计算机程序产品和/或如配置成执行与处理器耦合的存储器上存储的和/或由存储器提供的指令的处理器的处理器。在本说明书中,这些实现或者本发明可采取的任何其它形式可称作技术。一般来说,所公开过程的步骤的顺序在本发明的范围之内可以改变。除非另外说明,描述为被配置成执行任务的如处理器或存储器的组件可实现为在给定时间暂时被配置成执行该任务的通用组件或者被制造成执行该任务的专用组件。本文所使用的术语‘处理器’指的是被配置成处理如计算机程序指令的数据的一个或多个装置、电路和/或处理核心。下面连同附图一起来提供本发明的一个或多个实施例的详细描述,附图示出本发明的原理。结合这样的实施例来描述本发明,但是本发明并不局限于任何实施例。本发明的范围仅由权利要求书来限定,并且本发明包含许多备选、修改和等效物。在以下描述中陈述大量具体细节,以提供对本发明的透彻了解。提供这些细节是出于示例的目的,并且本发明可在没有这些具体细节的部分或全部的情况下按照权利要求书来实施。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术资料,以免不必要地模糊本发明。公开了实时USB类级解码。在各个实施例中,硬件USB分析器被配置成接收和监测例如目标USB装置与相关联目标主机之间的USB通信。分析器向分析个人计算机(PC)或其它分析计算机提供分析流,例如,分析流包含在目标装置与目标主机之间所发送的所观测USB分组。分析PC运行分析软件,分析软件被配置成使PC能够将所监测USB业务解码到类级,并且经由显示装置向用户显示装置类级信息,如在目标装置与目标主机之间所发送的类级指令和命令。在一些实施例中,如果分析器在所规定时间之内尚未观测到分组,则分析器向分析PC输出周期的“无活动”分组或其它报告。在PC上运行的分析软件使用与“无活动”分组相关联的时间戳或其它时间以及目标装置与目标主机之间的上一次观测到分组的时间连同对类级状态(例如,挂起并且尚未完成的类级交互,如从“大容量存储”装置“读取”)的认知一起以有效且及时的方式来检测和报告超时。在一些实施例中,分析器在所监测分组被接收时将其存储在循环缓冲器中。一旦缓冲器已满,则当新分组被接收并被解码时,覆写较旧的分组。在接收“捕获”命令或其它指示时,将缓冲器的内容在“捕获”流中提供给分析PC。在一些实施例中,在分析器处接收到分组时,分析器确定它们是否与装置的初始枚举和/或如装置描述符数据的后枚举信息相关联。这样的信息需要是已知的,并且在一些实施例中用于实现类级解码;然而,可在接收到枚举信息之后(相对)长时间启动“捕获”。在一些实施例中,例如在被覆写之前,枚举记录被复制和加索引,以确保它们(或者从其中得出的相关联信息)对于以后用于实现后续“捕获的”流的类级解码将是可用的。在一些实施例中,分析软件被配置成按照如下方式来显示信息:使得用户可能不感兴趣的分组以防止用户看到的方式将不会显示,例如,在适当紧凑和/或同时可见的显示区中查看感兴趣的相关分组序列的方式来显示用户可能不感兴趣的分组。可能不感兴趣的分组的示例是周期地发送以标记新帧开始的连续“帧开始”(SOF)分组和在目标主机与目标装置之间的连续“IN”和“NAK”分组对的交换,即当主机在装置无论什么原因而没有数据向主机发送的时期期间周期地轮询装置的数据时所交换的分组。在各个实施例中,对不是特别感兴趣的这样的分组进行编组和显示的方式可取决于选择了类级视图还是选择了事务级视图而改变。图1是示出硬件USB分析器的实施例的框图。在所示示例中,USB分析器102被配置成监测目标USB装置104与目标主机106之间的USB连接。第一USB缆线/连接器108将目标USB装置104连接到分析器102;以及第二USB缆线/连接器110将分析器102连接到目标主机106。目标USB装置的示例包括但不限于打印机、大容量存储装置以及如鼠标或键盘的人机接口设备(HID)。采用图1所示方式来连接,分析器102接收由目标USB装置传送给目标主机或者由目标主机传送给目标装置的USB总线信号,使分析器能够监测双向通信。分析器通常被配置成被动地监听,以使得目标主机和目标装置认为它们之间具有直接USB连接。分析器102经由分析流输出连接112向分析PC(或其它计算机)114来提供分析流。在一些实施例中,连接112本身是分析器102与分析PC114之间的USB连接。在各个实施例中,分析PC114和目标主机106可包括相同的物理系统,例如,装置104经由分析器102以及连接108和110与其连接的PC。图2是示出USB分析器的实施例的框图。在所示示例中,图1的硬件USB分析器102被示出为包括USB分组解码器202,USB分组解码器202被配置成接收和解码图1中所示的目标装置与目标主机之间发送的信号。在图2所示的示例中,箭头指示对由目标装置104经由连接108所发送的预计送往目标主机106的分组的观测,目标主机106经由连接110连接到分析器102;然而,从主机发送给装置的分组也会被接收和解码。USB分组解码器202向分析流生成器204提供所观测分组,分析流生成器204将所观测分组包括在作为连接112上的输出提供给分析PC的分析流中。在一些实施例中,分析器102将分析器时间戳附加在经由连接112所发送的每个所观测分组上。在所示示例中,时间戳生成器和逻辑206生成并且提供时间戳。在一些实施例中,在所监测总线(例如这个示例中的108、110)上的不活动的时期期间,分析流生成器被配置成例如周期地输出“无活动”或其它周期分组以指示在相关联的时期期间在所监测总线上没有观测到分组。例如,在一些实施例中,分析器时间戳包括16位,以及在所监测总线上没有所监测分组被看到的情况下每次时间戳翻转时发送“无活动”分组。图3是提供可与USB数据相关联的各个语义级的概念表示的框图。在所示示例中,多层概念表示300包括电信号层302。在物理导线和连接器级,USB装置和目标主机在导线上发送和接收信号。例如,USB1.0或2.0缆线具有4条导线,两条用于电力(Vcc、GND)以及两条用于数据(D+、D-)。对总线上的信号进行解码以识别对应分组(304)。在所规定序列中交换的一系列分组包括事务(306)。例如,主机用以从装置轮询和接收数据的“IN”事务可包括由主机发送给装置的“IN”分组、由装置发送回主机的“DATA”分组以及从主机至装置以确认数据的接收的“ACK”分组。(如果装置没有数据,则装置用“NAK”分组来响应IN分组,并且那将是特定交换的结束。)另一个示例是“OUT”事务(从主机至装置的OUT分组、接着将数据从主机提供给装置的DATA分组,最后接着从装置至主机的确认数据的接收的ACK分组)。USB类使另一个语义级能够被理解和使用。在类级,以及取决于类、子类等,一组一个或多个相关事务可包括类级传递、命令、指令等。例如,USB装置在“大容量存储”类中的情况下,“读取”传递可包括用于发起操作的“命令传输”、传递数据的“数据传输”以及标记传递的完成和同步状态的“状态传输”。这些“传输”的每个又可包括一个或多个事务。例如,数据传输可包括一系列IN事务,其中的每个用于向主机递送待读取的所请求数据的一部分。如前所述,一系列一个或多个事务的类级含意通常在类或类相关的规范中定义。图3中,表示了1至n(308)的多个类。在一些实施例中,例如在连接到可兼容主机的特定配置的装置的上下文中,可应用一个或多个类、子类和/或类和/或子类特定协议和/或配置。在一些实施例中,类、子类、协议和/或装置描述符信息可由装置来提供和/或在初始连接和/或启动(例如引导)时交换,并且可包括以上提到的枚举信息和/或如装置描述符信息的后枚举信息。在各个实施例中,这样的枚举和/或后枚举信息例如由分析PC上的分析软件使用以将所观测USB业务解码到类级,并例如经由显示器以人可读的形式在类级来呈现信息。图4是示出分析PC的实施例的框图。在所示示例中,图1的分析PC114被示出为包括配置成经由连接112来与硬件USB分析器通信的通信接口402,例如USB、网络或其它接口。通信接口402向事务级解码引擎404提供包含经由连接112所接收的分析流的所观测分组(和其它数据,如以上提到的周期的“无活动”分组)。事务级解码引擎404将分组关联到包括事务的编组中,并且向类级解码引擎406提供事务级信息。在一些实施例中,事务级解码引擎404向类级解码引擎406向上传递分析流中包含的任何“无活动”分组(或者在一些实施例中包含同样的数据,如分析器时间戳)。类级解码引擎406分析所接收事务信息以得出类级信息,如识别类级传递、命令和指令。在各个实施例中,类级解码引擎406使用在装置枚举或后枚举期间所观测的类和/或装置描述符和/或其它数据来确定如何在类级对信息进行解码。在一些实施例中,类级解码引擎406被配置成接收由分析器在所监测总线上的静寂时期期间所生成的“无活动”分组或其它周期的分组和/或包含同样的数据,例如分析器时间戳,并使用所接收的无活动数据连同对类级状态(例如,在任何类级操作正挂起时的类级状态)的认知来生成和显示类级超时事件,如下面结合图7更全面的描述。在图4所示的示例中,用户接口代码408从类级解码引擎接收信息,并经由显示装置410来显示类级信息。在一些实施例中,用户接口代码408响应例如来自用户输入以选择将要显示的视图。例如,在一些实施例中,如果启用“分类”或“类级解码”,则显示解码到该类级的信息;但是,如果没有启用分类,则显示事务级信息。在各个实施例中,事务级解码引擎404、类级解码引擎406和用户接口代码408中的一个或多个包括通过使用包括PC114的处理器执行相关联的软件指令来提供的实体。图5是示出生成分析流的过程的实施例的流程图。在一些实施例中,图5的过程在硬件USB分析器上实现。在所示示例中,例如由图2的解码器202将在所监测总线上感测的电信号解码成分组(502)。一旦分组被解码(504),就附加分析器时间戳并将所观测分组包括在作为输出所提供的分析流中(506)。如果在规定的(例如可配置)周期之内没有检测到分组(508),则生成携带分析器时间戳的“无活动”分组并将其包含在分析流中(510)。在一些实施例中,不管所监测总线上是否已经存在活动,分析器周期地输出“无活动”或者其它分组,以及在一些这样的实施例中,步骤508被省略,和/或包括确定是否已经到达提供作为输出的“无活动”或其它周期的分组的时间的步骤。在一些实施例中,不管所监测总线上的活动如何,每次相关联计数器翻转时,使用16位分析器时间戳并输出周期的分组。如前所述继续操作直到完成(512),例如分析器被断开和/或从分析PC接收到停止命令。图6是示出对所监测USB数据进行解码和显示的过程的实施例的流程图。在一些实施例中,图6的过程由如图1和图4的分析PC114的分析计算机来实现。在所示示例中,在接收到分组(602)时,将其解码到事务级(604)。又将事务级信息解码到类级(606),并显示类级操作、命令和指令(608)。图7是示出根据类级上下文来生成超时的过程的实施例的流程图。在一些实施例中,图7的过程由如图4的类级解码引擎406的类级解码引擎来实现。在所示示例中,接收“无活动”事件(702)。在各个实施例中,无活动事件可包括由USB分析器所生成和发送的无活动分组和/或从其中所得出的事件或其它记录或指示。例如,在一些实施例中,USB分析器被配置成在每次16位或其它计数器翻转时输出虚(dummy)分组或其它分组。分析PC被配置成生成超时,即使在所监测总线上接收到n个这样的虚分组或其它无活动分组而没有观测到包含数据的介入的分组(interveningpacket)的情况下。在一些实施例中,在沿至类级解码引擎的路径的介入级处,可收集一个或多个这样的事件,并生成下一级超时事件。例如,事务级解码引擎在生成事务级超时和/或向类级解码引擎向上传递事务级所生成的超时事件之前可累积m个分组级超时事件。一旦在类级解码引擎接收超时事件(702),如果类级操作正挂起(704),例如已经观测到包括类级传递的一个或多个事务但是预期将接收与类级传递有关的一个或多个剩余事务,例如借助于在可适用类规范中陈述的要求和协议,将“无活动”事件相关联的时间和与类级操作相关联的时间进行比较,例如,和与类级操作相关联的第一所接收分组的时间戳进行比较(706)。如果经过的时间超过所规定阈值(708),则生成类级超时事件并且向用户显示相关联告警(710)。在一些实施例中,通过累积连续事务级或其它所接收超时事件来确定经过的时间,以及如果连续接收到超过所规定数量的这样的所接收超时事件而没有由类级解码引擎作为输出所提供的类级操作完成事件,则生成类级超时事件。如果没有类级超时被确定为已经发生,或者如果没有类级操作正挂起,或者一旦生成超时事件并且显示告警,则该过程结束。图8是示出被解码到类级的所监测USB数据的显示的实施例的框图。在所示示例中,显示器800包括记录栏802和数据栏804,在记录栏802中显示描述类级记录的性质和含意的信息;在数据栏804中显示与记录相关联的对应数据。在所示示例中,显示与从USB大容量存储装置中读取数据的操作相关联的数据。在第一行(排),“读取”操作通过“读取”记录来表示,其中负号指示该记录已经被扩展以显示在后续行中的分量记录。在数据栏中,显示指示被读取数据的逻辑块地址(LBA)和长度的数据连同被观测的操作已经成功完成(“已通过”)的指示。读操作被示出为包括命令传输、数据传输和状态传输。数据传输记录已经被扩展为示出包含数据传输的多个IN事务。第一IN事务已经被扩展为示出包括该事务的IN、DATA和ACK分组。在一些实施例中,如果在所规定时间之内尚未观测到图8所示的传输序列已经完成,则会显示错误或其它指示。例如,在一些实施例中,基于对类级上下文的认知(在这里是挂起从“大容量存储”装置类的成员的装置的读取),如果在上一次确认事务和一个或多个后续事务和/或预期被接收以指示类级操作的完成的分组之间已经经过了所规定时间量(例如基于“无活动”等分组和/或从分析器所接收的并向上传播到类级解码引擎的信息来确定的),则类级解码引擎或相关元件被配置成生成超时。在这样的情况下,显示“超时”或其它错误而不是图8所示的“已通过”状态。使用上述方式,能够实时检测类级传递或其它类级操作的完成中的超时或其它错误。在非实时分析中,有可能在分析流中向前搜索(lookahead)来查看是否和/或何时接收到与类级传递相关联的后续分组。然而,为了执行实时分析,以及具体来说为了及时检测超时并且实时向用户显示相关联告警,要求如本文所述的那些技术在不利用能够无限地检查将来的情况下使分析软件能够实时确定类级操作已经超时。否则,用户体验会是显示不会变化,这可由除了类级传递的完成的失败之外的原因而引起,例如硬件分析器的故障、分析器与分析PC之间的连接的问题和/或分析软件和/或PC的故障。在各个实施例中,硬件USB分析器和/或分析PC被配置成使用循环缓冲器来存储包括所监测USB流的分组和/或记录。一旦建立连接并在所监测总线上观测到数据,就对分组进行解码并将相关联记录存储在循环缓冲器中,以供在接收到想要实时“捕获”和分析的指示的情况下进一步使用和分析。循环缓冲器用于削减用来存储记录的存储器或其它存储装置。一旦接收到开始实时捕获的命令,就从缓冲器抽出记录,以及例如在适用的情况下,通过将信息解码到事务和/或类级来分析记录。图9是示出循环缓冲器的实施例的框图。在所示示例中,循环缓冲器900包括多个存储位置902,存储器或其它存储装置的所分配块被组织成该多个存储位置902。在概念上,在一些实施例中,第一记录会被存储在最左位置,下一记录存储向右的下一位置,依此类推,直到达到最后(在本例中为最右)存储位置。如箭头904所示,下一个接收的数据会被存储在最左位置,以覆写存储在该位置中的数据来作为开始。写入(存储)会向右进行,以覆写先前存储的数据,直到再次达到最后位置,这时写入会返回到第一位置,依此类推。这种方式允许被分配的有限的存储量存储所观测USB数据,但是,一旦缓冲器已经被填充,新数据就只能够通过覆写早前所观测并存储的数据来存储。在没有使用本文所述的技术的情况下,这种方式可以导致覆写将来支持实时类级解码可能需要数据,如通常当装置被首次连接时和/或在启动时交换的枚举信息和装置描述符信息,并且因此是一旦循环缓冲器变满则首先被覆写的数据中的数据。在一些实施例中,在可能将来需要来实现在USB数据流被接收时对其进行实时类级解码的数据,如枚举和装置描述符信息,在其被覆写之前被存储在(与循环缓冲器不同的)另一个位置。图10A是示出用于保存枚举和相关信息的过程的实施例的流程图。在所示示例中,监测在所监测总线上所观测的USB数据,以检测包括枚举信息的记录(1002)。将所检测枚举记录(1004)复制到与循环缓冲器不同的存储位置,并且对其加索引以帮助检索(1006)。非枚举记录和枚举记录以同样的方式被写入循环缓冲器(1008)。继续该过程直到完成(1010),例如,分析器被从目标装置和/或目标主机断开连接。图10B是示出用于保存枚举和相关信息的过程的实施例的流程图。在所示示例中,当接收分组(1030)时,确定它是否为枚举(或其它装置类、身份和/或配置)相关的(1032)。如果是的话,则将相关联记录标记为枚举记录(1034)。在一些实施例中,仅当启用类级解码时才标记枚举记录。将未标记记录(如果所接收分组不是枚举相关的)或者标记记录(在枚举记录的情况下)存储在循环缓冲器中(1036)。图10C是示出用于保存枚举和相关信息的过程的实施例的流程图。在所示示例中,在接收关于循环缓冲器已满(或者接近为满)的指示(1050)时,例如,通过检查如关于图10B所提到的标记来检查缓冲器枚举记录的存在(1052)。如果找到任何枚举记录(1054),则将它们复制到另一个位置并且加索引(1056)。如果没有找到枚举记录(1054)或者如果这样一旦已经复制和索引了所有这样的记录(1056)时,则继续/恢复写入循环缓冲器(1058),如果适用,包括覆写先前存储的枚举(若有的话)和/或非枚举记录。图11是示出用于实时类级解码的过程的实施例的流程图。在所示示例中,在接收开始实时类级解码的指示(1102)时,检索与目标装置相关联的枚举记录(1104)。在一些实施例中,如果循环缓冲器仍然存在记录,则从循环缓冲器检索记录,或者如果不存在记录,则从其被复制到的位置来检索记录。在一些实施例中,如果需要避免它们被覆写,则检查将枚举记录已经复制到其中的位置;如果存在枚举记录,则对它们进行检索并使用,如果不存在,则按顺序从缓冲器播放记录,并且在遇到枚举记录时对它们进行处理。一旦被检索(和/或在缓冲器遇到),就处理枚举记录,并对相关联装置信息提取、显示和/或用于将类级解码引擎配置成使相关联USB数据解码到类级(1106)。一旦枚举记录已经被处理,则根据从枚举记录所确定的枚举信息来处理后续记录,其中包括通过根据从枚举记录所得出的装置和其它枚举信息将信息解码到类级(1108)。USB目标装置和主机生成一些分组,这些分组是适用的USB协议的正确操作和实现所需的但是通常至少单独地不是开发人员特别感兴趣的。例如,由目标主机周期地输出帧开始(SOF)分组以描绘帧边界。同样,USB协议是主机为中心的,因此主机通常将周期地轮询所连接装置,以邀请它们向主机发送数据。如果装置没有数据,例如鼠标或其它输入装置一段时间尚未被用户触摸,则将发送邀请装置发送数据的IN分组以及指示装置没有对于该主机的数据的响应NAK分组的序列。显示器具有有限物理尺寸和作为结果的显示区,通过参照图8能够看到,例如在相对空闲时期或者当感兴趣活动正发生但以相对慢时间尺度发生时的时期期间,显示器可能被一系列IN-NAK对或者SOF分组记录充满,从而将感兴趣信息推出查看区,或者通过散布不感兴趣的记录来模糊这样的信息,不感兴趣的记录在这个意义上只是噪声。在一些实施例中,与预期不是特别感兴趣的分组或其它数据相关联的记录不一定单独和/或立即显示。反而,这样的记录被积累并被作为编组来表示,例如,采用不干扰可能更感兴趣的其它记录的显示的方式。在各个实施例中,累积不太可能感兴趣的分组、事务和/或其它数据和事件。一旦事务和/或类级事件准备好被显示,就显示所累积的不感兴趣的记录和/或它们的编组表示,例如,在正好在显示事务和/或类级记录的显示区之上或者与其相邻和/或分离的行或者其它区域中显示。图12是示出用于显示USB类级信息的过程的实施例的流程图。在所示示例中,当接收分组(1202)时,例如基于分组类型和/或事务或者分组与其相关联的其它交互来对分组是否可能是感兴趣的作出确定(1204)。例如,SOF分组和IN-NAK分组对可被认为是不太可能感兴趣的。如果所接收分组(1202)是不太可能感兴趣的(1204),则该分组与其它类似分组一起被累积(1206)而不立即显示。如果分组是感兴趣的(1204),则对与其相关联的事务是否完成(1208)作出确定。如果是的话,则生成相关联事务记录(1210),并且取决于显示模式和用户动作来显示该相关联事务记录。例如,在图8所示的示例中,显示与包含数据传输的事务相关联的记录,而不显示包含命令传输和状态传输的那些记录。在生成事务记录(1210)中,对于类级传递或事务与其相关联的其它操作是否完成作出确定(1212)。如果是的话,则生成和显示与类级传递或其它操作相关联的记录,并显示任何所累积的不太可能感兴趣的记录的编组表示,例如,正好在类记录之前或附近或者作为类记录的组成部分显示。当接收和处理后续分组时,继续该过程直到完成(1216)。图13是示出用于USB事务级信息的过程的实施例的流程图。在所示示例中,接收分组(1302)。如果分组是不感兴趣的(1304),则它与类似分组(若有的话)一起被累积而不被立即显示(1306)。如果分组是感兴趣的并且相关联的事务这时完成(1308),则显示与事务相关联的记录以及被认为是不感兴趣的任何所累积的分组的编组表示(1310)。继续该过程直到完成(1312)。图14是示出在类级与事务级视图之间进行切换的过程的实施例的状态图。在所示示例中,显示器能够在第一视图(1402)和第二视图(1404)之间切换,在第一视图(1402)中,如图12中的,被认为不是特别感兴趣的记录基于类级事件被累积并且并被表示为编组,在第二视图(1404)中,如图13中的,被认为不是特别感兴趣的记录基于事务级事件被累积并且被表示为编组。使用这种方式,取决于已经启用哪种类级解码(和/或相关联视图),采用最小地干扰可能是感兴趣的信息的显示的方式在类级或事务级表示不是感兴趣的记录。图15是示出在类级与事务级视图之间进行切换的过程的实施例的状态图。在一些实施例中,图15的过程实现图14的状态图。在所示示例中,如果没有启用分类(即,类级解码)(1502),则被认为不太可能感兴趣的记录在事务级被编组和被显示(1504)。如果启用分类(1502),则被认为不太可能感兴趣的记录在类级被编组和被显示(1506)。继续该过程直到完成(1508)。图16是示出类级视图的实施例的框图。在所示示例中,显示器1600包括记录栏1602和数据栏1604。例如,装置可以是大容量存储装置。在所示示例中,显示在类级与三个“读取”传递相关联的记录。第一传递在第一行中按照“折叠”方式示出,其中在数据栏中示出概括信息并且指示“已通过”状态。在第二行中,就在与开始于第三行的第二“读取”相关联的记录的显示之前,显示93个介入的SOF分组的编组表示,其中在数据栏中具有它们表示的帧的概括列表。注意,在连续行中显示93个SOF分组会导致要求用户在查看下一个“读取”传递之前向下卷动通过93个记录。在所示示例中,图16所示的在第三行上开始的第二传递的“读取”传递记录已经被扩展为示出还包含传递的命令传输、数据传输和状态传输类级事件的分量记录。在这个示例中,在顶部类级“读取”记录(即,所示的显示1600的第四行)之后的第一行中的9个SOF分组被表示为编组,该9个SOF分组可能已经被散布有包含分量类级传输和/或包含那些传输的事务的分组。这样,在没有不感兴趣的介入的记录的情况下,分量传输以及包含那些传输的事务可以被一起查看。图17是示出事务级视图的实施例的框图。在所示示例中,显示器1700包括记录栏1702和数据栏1704。在这个示例中,提供事务级视图。这里不是如图16中的SOF分组那样围绕类级事件对不感兴趣编组,在图17所示的示例中,这样的分组围绕感兴趣的事务来被编组和被显示。例如,在第一行中,在扩展的IN事务记录(和分量分组)之前,在单个条目中表示3个SOF分组的编组。在一些实施例中,即使SOF分组的一个或多个已经被散布于所监测总线上所观测的业务中,这样的分组也通过就在与事务相关联的记录之前(或者备选地之后)所列出的编组条目来表示,该与事务相关联的记录是就在观测到它们的挂起之前和/或期间的。例如,在图17所示的示例中,如果3个SOF分组的一个或多个出现在显示1700的第三和第五行中所示的IN分组与ACK分组之间,则这样的SOF分组会如图17中所示的来表示,即通过在第二行中所列出的IN事务记录之前的所列出的单个编组条目来表示。注意,在图17的最后两行中所示的最终两个IN事务之间碰巧没有SOF分组出现。虽然在上述各个实施例中,IN-NAK分组对和SOF分组被用作例如对于查看使用USB分析器所监测的USB数据的显示的用户来说可能不是特别感兴趣的分组的示例,但是本文所述的技术可被应用于以非侵入方式来显示不是特别感兴趣的其它分组。例如,在USB3.0的上下文中,可能不是特别感兴趣的分组可以包括但不限于等时时间戳分组(ITP)、链路开通(LUP)和/或链路停止(LDN)分组和/或如LGO和/或LXU分组的链路功率管理分组。本文所述的技术帮助以实时的方式显示解码到类级的所监测USB数据。虽然为了理解的清楚起见而比较详细地描述了以上实施例,但是本发明并不局限于所提供的细节。存在实现本发明的许多备选方式。所公开的实施例是说明性而不是限制性的。