“跟踪”视图中的输入/输出堆栈
左上方的面板显示输入和输出堆栈。堆栈是在源(输入堆栈)或接收器(输出堆栈)处终止的调用序列。
数据流
左下方的面板包含所选方法的数据流。数据可以流经方法调用或分配。“数据流”部分显示了项和上下文在源代码中出现的行号。
调用图
注: 在 JavaScript™ 跟踪中,将显示 JavaScript 语句图 而非图形调用图。
图表是调用图的图形表示法。每个方法调用都是图形内的一个矩形,用于显示类名和方法名称:
- 红色将方法调用标识为源和/或接收器。
- 丢失的接收器是无法继续跟踪的 API 方法。虚拟丢失的接收器是丢失的接收器,同时又是虚函数(可具有多个实现的函数)。如果为黄色,指示方法调用是丢失的接收器或虚拟丢失的接收器。
- 如果为蓝色,则指示方法调用不是验证/编码例程。
- 如果为灰色,则代表所有其他跟踪节点类型。
每个方法调用都分为下列三个部分:类名称、方法名称和受感染参数名称。方法调用的悬浮式文本提供了更详细的信息。
带箭头的行表示从方法到方法的调用。空心箭头指示在调用中不存在已知的感染数据,而实心箭头指示感染的数据流。虚线箭头指示 return 语句。
符号 | 描述 |
---|---|
![]() |
没有已知感染数据的方法调用 |
![]() |
带有感染数据的方法调用 |
![]() |
带有感染数据的返回 |
![]() |
源(红色):作为潜在不可信数据的起源的方法、函数或参数。 |
![]() |
接收器(红色):对于已感染数据可能存在漏洞或在使用时可能很危险的方法或函数。 |
![]() |
丢失的接收器(黄色):对于已感染数据可能存在漏洞或在使用时可能很危险的方法或者函数。 |
![]() |
虚拟丢失的接收器(黄色):一种丢失的接收器,解析为多个具体实现。 |
![]() |
非验证/编码例程(蓝色)。如果将 API 标记为非验证/编码例程,即标识此 API 不会验证任何数据。 |
![]() |
感染传播器:一种函数/方法,用于将感染传播到其一个或多个参数、其返回值或 this 指针。 |
提示:
- 在“跟踪”视图中,将鼠标悬停在图形中的跟踪节点上会提供关于该节点的信息。
- 该视图中的两个左面板(输入/输出堆栈面板和数据流面板)可折叠以便更容易查看图形调用图。要折叠这些面板,请选择隐藏树视图箭头按钮。要在这些面板被隐藏时显示它们,请选择显示树视图箭头按钮。
- 移动滚动条可放大并聚焦于详细信息,或者缩小以查看更多内容。将鼠标悬浮在缩放滚动条上将提供当前缩放级别。要放大到最高级别,请单击放大到 200%。要尽可能缩小,请单击缩放到适合。