1fb726d48Sopenharmony_ci<!DOCTYPE html>
2fb726d48Sopenharmony_ci<html>
3fb726d48Sopenharmony_ci  <head>
4fb726d48Sopenharmony_ci    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5fb726d48Sopenharmony_ci    <title>quickstart_systemtrace</title>
6fb726d48Sopenharmony_ci
7fb726d48Sopenharmony_ci    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8fb726d48Sopenharmony_ci
9fb726d48Sopenharmony_ci    <style>
10fb726d48Sopenharmony_ci      code[class*='smartperf-'],
11fb726d48Sopenharmony_ci      pre[class*='smartperf-'] {
12fb726d48Sopenharmony_ci        color: #333333;
13fb726d48Sopenharmony_ci        background: none;
14fb726d48Sopenharmony_ci        font-family: Helvetica;
15fb726d48Sopenharmony_ci        line-height: 1.6;
16fb726d48Sopenharmony_ci        text-align: left;
17fb726d48Sopenharmony_ci        white-space: pre;
18fb726d48Sopenharmony_ci        -moz-tab-size: 9;
19fb726d48Sopenharmony_ci        -o-tab-size: 9;
20fb726d48Sopenharmony_ci        tab-size: 8;
21fb726d48Sopenharmony_ci        -webkit-hyphens: none;
22fb726d48Sopenharmony_ci        -moz-hyphens: none;
23fb726d48Sopenharmony_ci        -ms-hyphens: none;
24fb726d48Sopenharmony_ci        hyphens: none;
25fb726d48Sopenharmony_ci      }
26fb726d48Sopenharmony_ci
27fb726d48Sopenharmony_ci      /* Code blocks */
28fb726d48Sopenharmony_ci      pre[class*='smartperf-'] {
29fb726d48Sopenharmony_ci        padding: 0.9em;
30fb726d48Sopenharmony_ci        overflow: auto;
31fb726d48Sopenharmony_ci        border-radius: 2px;
32fb726d48Sopenharmony_ci        background: #f5f5f4;
33fb726d48Sopenharmony_ci      }
34fb726d48Sopenharmony_ci
35fb726d48Sopenharmony_ci      /* Inline code */
36fb726d48Sopenharmony_ci      :not(pre) > code[class*='smartperf-'] {
37fb726d48Sopenharmony_ci        white-space: normal;
38fb726d48Sopenharmony_ci        background: #fcf8f8;
39fb726d48Sopenharmony_ci        padding: 1px 0.2em;
40fb726d48Sopenharmony_ci        border-radius: 1px 0.3em;
41fb726d48Sopenharmony_ci      }
42fb726d48Sopenharmony_ci
43fb726d48Sopenharmony_ci      .tk.comment,
44fb726d48Sopenharmony_ci      .tk.blockquote {
45fb726d48Sopenharmony_ci        color: #8c918c;
46fb726d48Sopenharmony_ci      }
47fb726d48Sopenharmony_ci
48fb726d48Sopenharmony_ci      .tk.cdata {
49fb726d48Sopenharmony_ci        color: #183898;
50fb726d48Sopenharmony_ci      }
51fb726d48Sopenharmony_ci
52fb726d48Sopenharmony_ci      .tk.doctype,
53fb726d48Sopenharmony_ci      .tk.punctuation,
54fb726d48Sopenharmony_ci      .tk.variable,
55fb726d48Sopenharmony_ci      .tk.macro.property {
56fb726d48Sopenharmony_ci        color: #424242;
57fb726d48Sopenharmony_ci      }
58fb726d48Sopenharmony_ci
59fb726d48Sopenharmony_ci      .tk.operator,
60fb726d48Sopenharmony_ci      .tk.important,
61fb726d48Sopenharmony_ci      .tk.keyword,
62fb726d48Sopenharmony_ci      .tk.rule,
63fb726d48Sopenharmony_ci      .tk.builtin {
64fb726d48Sopenharmony_ci        color: #b71d65;
65fb726d48Sopenharmony_ci      }
66fb726d48Sopenharmony_ci
67fb726d48Sopenharmony_ci      .tk.string,
68fb726d48Sopenharmony_ci      .tk.url,
69fb726d48Sopenharmony_ci      .tk.regex,
70fb726d48Sopenharmony_ci      .tk.attr-value {
71fb726d48Sopenharmony_ci        color: #16338d;
72fb726d48Sopenharmony_ci      }
73fb726d48Sopenharmony_ci
74fb726d48Sopenharmony_ci      .tk.property,
75fb726d48Sopenharmony_ci      .tk.number,
76fb726d48Sopenharmony_ci      .tk.boolean,
77fb726d48Sopenharmony_ci      .tk.entity,
78fb726d48Sopenharmony_ci      .tk.atrule,
79fb726d48Sopenharmony_ci      .tk.constant,
80fb726d48Sopenharmony_ci      .tk.symbol,
81fb726d48Sopenharmony_ci      .tk.command,
82fb726d48Sopenharmony_ci      .tk.code {
83fb726d48Sopenharmony_ci        color: #037aa2;
84fb726d48Sopenharmony_ci      }
85fb726d48Sopenharmony_ci
86fb726d48Sopenharmony_ci      .tk.tag,
87fb726d48Sopenharmony_ci      .tk.selector,
88fb726d48Sopenharmony_ci      .tk.prolog {
89fb726d48Sopenharmony_ci        color: #69ad62;
90fb726d48Sopenharmony_ci      }
91fb726d48Sopenharmony_ci
92fb726d48Sopenharmony_ci      .tk.function,
93fb726d48Sopenharmony_ci      .tk.namespace,
94fb726d48Sopenharmony_ci      .tk.pseudo-element,
95fb726d48Sopenharmony_ci      .tk.class,
96fb726d48Sopenharmony_ci      .tk.class-name,
97fb726d48Sopenharmony_ci      .tk.pseudo-class,
98fb726d48Sopenharmony_ci      .tk.id,
99fb726d48Sopenharmony_ci      .tk.url-reference .tk.variable,
100fb726d48Sopenharmony_ci      .tk.attr-name {
101fb726d48Sopenharmony_ci        color: #775d9d;
102fb726d48Sopenharmony_ci      }
103fb726d48Sopenharmony_ci
104fb726d48Sopenharmony_ci      .tk.entity {
105fb726d48Sopenharmony_ci        cursor: help;
106fb726d48Sopenharmony_ci      }
107fb726d48Sopenharmony_ci
108fb726d48Sopenharmony_ci      .tk.title,
109fb726d48Sopenharmony_ci      .tk.title .tk.punctuation {
110fb726d48Sopenharmony_ci        font-weight: bold;
111fb726d48Sopenharmony_ci        color: #1a3773;
112fb726d48Sopenharmony_ci      }
113fb726d48Sopenharmony_ci
114fb726d48Sopenharmony_ci      .tk.list {
115fb726d48Sopenharmony_ci        color: #f56940;
116fb726d48Sopenharmony_ci      }
117fb726d48Sopenharmony_ci
118fb726d48Sopenharmony_ci      .tk.inserted {
119fb726d48Sopenharmony_ci        background-color: #eaffea;
120fb726d48Sopenharmony_ci        color: #509b2f;
121fb726d48Sopenharmony_ci      }
122fb726d48Sopenharmony_ci
123fb726d48Sopenharmony_ci      .tk.deleted {
124fb726d48Sopenharmony_ci        background-color: #fae1e1;
125fb726d48Sopenharmony_ci        color: #ad2d06;
126fb726d48Sopenharmony_ci      }
127fb726d48Sopenharmony_ci
128fb726d48Sopenharmony_ci      .tk.bold {
129fb726d48Sopenharmony_ci        font-weight: bolder;
130fb726d48Sopenharmony_ci      }
131fb726d48Sopenharmony_ci
132fb726d48Sopenharmony_ci      .tk.italic {
133fb726d48Sopenharmony_ci        font-style: normal;
134fb726d48Sopenharmony_ci      }
135fb726d48Sopenharmony_ci
136fb726d48Sopenharmony_ci      /* JSON */
137fb726d48Sopenharmony_ci      .smartperf-json .tk.property {
138fb726d48Sopenharmony_ci        color: #19358c;
139fb726d48Sopenharmony_ci      }
140fb726d48Sopenharmony_ci
141fb726d48Sopenharmony_ci      .smartperf-markup .tk.tag .tk.punctuation {
142fb726d48Sopenharmony_ci        color: #2c2b2b;
143fb726d48Sopenharmony_ci      }
144fb726d48Sopenharmony_ci
145fb726d48Sopenharmony_ci      /* CSS */
146fb726d48Sopenharmony_ci      code.smartperf-css,
147fb726d48Sopenharmony_ci      .smartperf-css .tk.function {
148fb726d48Sopenharmony_ci        color: #047ca4;
149fb726d48Sopenharmony_ci      }
150fb726d48Sopenharmony_ci
151fb726d48Sopenharmony_ci      /* YAML */
152fb726d48Sopenharmony_ci      .smartperf-yaml .tk.atrule {
153fb726d48Sopenharmony_ci        color: #609b5a;
154fb726d48Sopenharmony_ci      }
155fb726d48Sopenharmony_ci
156fb726d48Sopenharmony_ci      code.smartperf-yaml {
157fb726d48Sopenharmony_ci        color: #153491;
158fb726d48Sopenharmony_ci      }
159fb726d48Sopenharmony_ci
160fb726d48Sopenharmony_ci      /* Ruby */
161fb726d48Sopenharmony_ci      .smartperf-ruby .tk.function {
162fb726d48Sopenharmony_ci        color: #3f3e3e;
163fb726d48Sopenharmony_ci      }
164fb726d48Sopenharmony_ci
165fb726d48Sopenharmony_ci      /* Markdown */
166fb726d48Sopenharmony_ci      .smartperf-markdown .tk.url {
167fb726d48Sopenharmony_ci        color: #6e5298;
168fb726d48Sopenharmony_ci      }
169fb726d48Sopenharmony_ci
170fb726d48Sopenharmony_ci      /* Makefile */
171fb726d48Sopenharmony_ci      .smartperf-makefile .tk.symbol {
172fb726d48Sopenharmony_ci        color: #6c5393;
173fb726d48Sopenharmony_ci      }
174fb726d48Sopenharmony_ci
175fb726d48Sopenharmony_ci      .smartperf-makefile .tk.variable {
176fb726d48Sopenharmony_ci        color: #183488;
177fb726d48Sopenharmony_ci      }
178fb726d48Sopenharmony_ci
179fb726d48Sopenharmony_ci      .smartperf-makefile .tk.builtin {
180fb726d48Sopenharmony_ci        color: #027ba4;
181fb726d48Sopenharmony_ci      }
182fb726d48Sopenharmony_ci
183fb726d48Sopenharmony_ci      /* Bash */
184fb726d48Sopenharmony_ci      .smartperf-bash .tk.keyword {
185fb726d48Sopenharmony_ci        color: #027fa9;
186fb726d48Sopenharmony_ci      }
187fb726d48Sopenharmony_ci
188fb726d48Sopenharmony_ci      /* highlight */
189fb726d48Sopenharmony_ci      pre[dl] {
190fb726d48Sopenharmony_ci        position: relative;
191fb726d48Sopenharmony_ci        padding: 1em 1px 1px 0.9em;
192fb726d48Sopenharmony_ci      }
193fb726d48Sopenharmony_ci
194fb726d48Sopenharmony_ci      pre[dl] .line-highlight-wrapper {
195fb726d48Sopenharmony_ci        position: absolute;
196fb726d48Sopenharmony_ci        top: 1px;
197fb726d48Sopenharmony_ci        left: 1px;
198fb726d48Sopenharmony_ci        background-color: transparent;
199fb726d48Sopenharmony_ci        display: block;
200fb726d48Sopenharmony_ci        width: 99%;
201fb726d48Sopenharmony_ci      }
202fb726d48Sopenharmony_ci
203fb726d48Sopenharmony_ci      pre[dl] .line-highlight {
204fb726d48Sopenharmony_ci        position: absolute;
205fb726d48Sopenharmony_ci        left: 1px;
206fb726d48Sopenharmony_ci        right: 1px;
207fb726d48Sopenharmony_ci        padding: inherit;
208fb726d48Sopenharmony_ci        margin-top: 0.9em;
209fb726d48Sopenharmony_ci        background: hsla(25, 21%, 50%, 0.08);
210fb726d48Sopenharmony_ci        background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0));
211fb726d48Sopenharmony_ci        pointer-events: none;
212fb726d48Sopenharmony_ci        line-height: inherit;
213fb726d48Sopenharmony_ci        white-space: pre;
214fb726d48Sopenharmony_ci      }
215fb726d48Sopenharmony_ci
216fb726d48Sopenharmony_ci      pre[dl] .line-highlight:before,
217fb726d48Sopenharmony_ci      pre[dl] .line-highlight[data-end]:after {
218fb726d48Sopenharmony_ci        content: attr(data-start);
219fb726d48Sopenharmony_ci        position: absolute;
220fb726d48Sopenharmony_ci        text-shadow: none;
221fb726d48Sopenharmony_ci        top: 0.3em;
222fb726d48Sopenharmony_ci        left: 0.7em;
223fb726d48Sopenharmony_ci        min-width: 0.9em;
224fb726d48Sopenharmony_ci        padding: 1px 0.6em;
225fb726d48Sopenharmony_ci        background-color: hsla(24, 20%, 47%, 0.4);
226fb726d48Sopenharmony_ci        color: hsl(20, 11%, 95%);
227fb726d48Sopenharmony_ci        text-align: center;
228fb726d48Sopenharmony_ci        vertical-align: 0.2em;
229fb726d48Sopenharmony_ci        border-radius: 10000px;
230fb726d48Sopenharmony_ci        box-shadow: 1px 2px #fdf6f6;
231fb726d48Sopenharmony_ci      }
232fb726d48Sopenharmony_ci
233fb726d48Sopenharmony_ci      pre[dl] .line-highlight[data-end]:after {
234fb726d48Sopenharmony_ci        content: attr(data-end);
235fb726d48Sopenharmony_ci        top: auto;
236fb726d48Sopenharmony_ci        bottom: 0.5em;
237fb726d48Sopenharmony_ci      }
238fb726d48Sopenharmony_ci
239fb726d48Sopenharmony_ci      html body {
240fb726d48Sopenharmony_ci        line-height: 1.6;
241fb726d48Sopenharmony_ci        font-size: 16px;
242fb726d48Sopenharmony_ci        color: #333333;
243fb726d48Sopenharmony_ci        overflow: initial;
244fb726d48Sopenharmony_ci        word-wrap: break-word;
245fb726d48Sopenharmony_ci        font-family: Helvetica;
246fb726d48Sopenharmony_ci        box-sizing: border-box;
247fb726d48Sopenharmony_ci      }
248fb726d48Sopenharmony_ci
249fb726d48Sopenharmony_ci      html body > :first-child {
250fb726d48Sopenharmony_ci        margin-top: 0px;
251fb726d48Sopenharmony_ci      }
252fb726d48Sopenharmony_ci
253fb726d48Sopenharmony_ci      html body h1,
254fb726d48Sopenharmony_ci      html body h2,
255fb726d48Sopenharmony_ci      html body h3,
256fb726d48Sopenharmony_ci      html body h4,
257fb726d48Sopenharmony_ci      html body h5,
258fb726d48Sopenharmony_ci      html body h6 {
259fb726d48Sopenharmony_ci        margin-top: 1em;
260fb726d48Sopenharmony_ci        margin-bottom: 16px;
261fb726d48Sopenharmony_ci        color: #000000;
262fb726d48Sopenharmony_ci        line-height: 1.2;
263fb726d48Sopenharmony_ci      }
264fb726d48Sopenharmony_ci
265fb726d48Sopenharmony_ci      html body h1 {
266fb726d48Sopenharmony_ci        font-weight: 300;
267fb726d48Sopenharmony_ci        font-size: 2.25em;
268fb726d48Sopenharmony_ci        padding-bottom: 0.3em;
269fb726d48Sopenharmony_ci      }
270fb726d48Sopenharmony_ci
271fb726d48Sopenharmony_ci      html body h2 {
272fb726d48Sopenharmony_ci        font-weight: 410;
273fb726d48Sopenharmony_ci        font-size: 1.74em;
274fb726d48Sopenharmony_ci        padding-bottom: 0.2em;
275fb726d48Sopenharmony_ci      }
276fb726d48Sopenharmony_ci
277fb726d48Sopenharmony_ci      html body h3 {
278fb726d48Sopenharmony_ci        font-size: 1.6em;
279fb726d48Sopenharmony_ci        font-weight: 501;
280fb726d48Sopenharmony_ci      }
281fb726d48Sopenharmony_ci
282fb726d48Sopenharmony_ci      html body h4 {
283fb726d48Sopenharmony_ci        font-size: 1.26em;
284fb726d48Sopenharmony_ci        font-weight: 601;
285fb726d48Sopenharmony_ci      }
286fb726d48Sopenharmony_ci
287fb726d48Sopenharmony_ci      html body h5 {
288fb726d48Sopenharmony_ci        font-size: 1.2em;
289fb726d48Sopenharmony_ci        font-weight: 601;
290fb726d48Sopenharmony_ci      }
291fb726d48Sopenharmony_ci
292fb726d48Sopenharmony_ci      html body h6 {
293fb726d48Sopenharmony_ci        font-size: 0.9em;
294fb726d48Sopenharmony_ci        font-weight: 601;
295fb726d48Sopenharmony_ci      }
296fb726d48Sopenharmony_ci
297fb726d48Sopenharmony_ci      html body h1,
298fb726d48Sopenharmony_ci      html body h2,
299fb726d48Sopenharmony_ci      html body h3,
300fb726d48Sopenharmony_ci      html body h4,
301fb726d48Sopenharmony_ci      html body h5 {
302fb726d48Sopenharmony_ci        font-weight: 601;
303fb726d48Sopenharmony_ci      }
304fb726d48Sopenharmony_ci
305fb726d48Sopenharmony_ci      html body h5 {
306fb726d48Sopenharmony_ci        font-size: 0.9em;
307fb726d48Sopenharmony_ci      }
308fb726d48Sopenharmony_ci
309fb726d48Sopenharmony_ci      html body h6 {
310fb726d48Sopenharmony_ci        color: #5c5c5c;
311fb726d48Sopenharmony_ci      }
312fb726d48Sopenharmony_ci
313fb726d48Sopenharmony_ci      html body strong {
314fb726d48Sopenharmony_ci        color: #090909;
315fb726d48Sopenharmony_ci      }
316fb726d48Sopenharmony_ci
317fb726d48Sopenharmony_ci      html body del {
318fb726d48Sopenharmony_ci        color: #525252;
319fb726d48Sopenharmony_ci      }
320fb726d48Sopenharmony_ci
321fb726d48Sopenharmony_ci      html body a:not([href]) {
322fb726d48Sopenharmony_ci        color: inherit;
323fb726d48Sopenharmony_ci        text-decoration: none;
324fb726d48Sopenharmony_ci      }
325fb726d48Sopenharmony_ci
326fb726d48Sopenharmony_ci      html body a {
327fb726d48Sopenharmony_ci        color: #0192da;
328fb726d48Sopenharmony_ci        text-decoration: none;
329fb726d48Sopenharmony_ci      }
330fb726d48Sopenharmony_ci
331fb726d48Sopenharmony_ci      html body a:hover {
332fb726d48Sopenharmony_ci        color: #029dea;
333fb726d48Sopenharmony_ci        text-decoration: none;
334fb726d48Sopenharmony_ci      }
335fb726d48Sopenharmony_ci
336fb726d48Sopenharmony_ci      html body img {
337fb726d48Sopenharmony_ci        max-width: 99%;
338fb726d48Sopenharmony_ci      }
339fb726d48Sopenharmony_ci
340fb726d48Sopenharmony_ci      html body > p {
341fb726d48Sopenharmony_ci        margin-top: 1px;
342fb726d48Sopenharmony_ci        margin-bottom: 15px;
343fb726d48Sopenharmony_ci        word-wrap: break-word;
344fb726d48Sopenharmony_ci      }
345fb726d48Sopenharmony_ci
346fb726d48Sopenharmony_ci      html body > ul,
347fb726d48Sopenharmony_ci      html body > ol {
348fb726d48Sopenharmony_ci        margin-bottom: 15px;
349fb726d48Sopenharmony_ci      }
350fb726d48Sopenharmony_ci
351fb726d48Sopenharmony_ci      html body ul,
352fb726d48Sopenharmony_ci      html body ol {
353fb726d48Sopenharmony_ci        padding-left: 1.9em;
354fb726d48Sopenharmony_ci      }
355fb726d48Sopenharmony_ci
356fb726d48Sopenharmony_ci      html body ul.no-list,
357fb726d48Sopenharmony_ci      html body ol.no-list {
358fb726d48Sopenharmony_ci        padding: 0px;
359fb726d48Sopenharmony_ci        list-style-type: none;
360fb726d48Sopenharmony_ci      }
361fb726d48Sopenharmony_ci
362fb726d48Sopenharmony_ci      html body ul ul,
363fb726d48Sopenharmony_ci      html body ul ol,
364fb726d48Sopenharmony_ci      html body ol ol,
365fb726d48Sopenharmony_ci      html body ol ul {
366fb726d48Sopenharmony_ci        margin-top: 1px;
367fb726d48Sopenharmony_ci        margin-bottom: 1px;
368fb726d48Sopenharmony_ci      }
369fb726d48Sopenharmony_ci
370fb726d48Sopenharmony_ci      html body li {
371fb726d48Sopenharmony_ci        margin-bottom: 1px;
372fb726d48Sopenharmony_ci      }
373fb726d48Sopenharmony_ci
374fb726d48Sopenharmony_ci      html body li.task-list-item {
375fb726d48Sopenharmony_ci        list-style: none;
376fb726d48Sopenharmony_ci      }
377fb726d48Sopenharmony_ci
378fb726d48Sopenharmony_ci      html body li > p {
379fb726d48Sopenharmony_ci        margin-top: 1px;
380fb726d48Sopenharmony_ci        margin-bottom: 1px;
381fb726d48Sopenharmony_ci      }
382fb726d48Sopenharmony_ci
383fb726d48Sopenharmony_ci      html body .task-list-item-checkbox {
384fb726d48Sopenharmony_ci        margin: 0 0.3em 0.24em -1.7em;
385fb726d48Sopenharmony_ci        vertical-align: middle;
386fb726d48Sopenharmony_ci      }
387fb726d48Sopenharmony_ci
388fb726d48Sopenharmony_ci      html body .task-list-item-checkbox:hover {
389fb726d48Sopenharmony_ci        cursor: pointer;
390fb726d48Sopenharmony_ci      }
391fb726d48Sopenharmony_ci
392fb726d48Sopenharmony_ci      html body blockquote {
393fb726d48Sopenharmony_ci        padding: 0.1px 15px 0 0.1px;
394fb726d48Sopenharmony_ci        font-size: inherit;
395fb726d48Sopenharmony_ci        color: #5c5c5c;
396fb726d48Sopenharmony_ci        margin: 16px 0.1px 0 0.1px;
397fb726d48Sopenharmony_ci        border-left: 3px solid #cbc9c9;
398fb726d48Sopenharmony_ci        background-color: #e8e6e6;
399fb726d48Sopenharmony_ci      }
400fb726d48Sopenharmony_ci
401fb726d48Sopenharmony_ci      html body blockquote > :first-child {
402fb726d48Sopenharmony_ci        margin-top: 0.2px;
403fb726d48Sopenharmony_ci      }
404fb726d48Sopenharmony_ci
405fb726d48Sopenharmony_ci      html body blockquote > :last-child {
406fb726d48Sopenharmony_ci        margin-bottom: 0.1px;
407fb726d48Sopenharmony_ci      }
408fb726d48Sopenharmony_ci
409fb726d48Sopenharmony_ci      html body hr {
410fb726d48Sopenharmony_ci        height: 5px;
411fb726d48Sopenharmony_ci        background-color: #cbcaca;
412fb726d48Sopenharmony_ci        margin: 32px 0 0.1px 0;
413fb726d48Sopenharmony_ci        border: 0 none;
414fb726d48Sopenharmony_ci      }
415fb726d48Sopenharmony_ci
416fb726d48Sopenharmony_ci      html body table {
417fb726d48Sopenharmony_ci        overflow: auto;
418fb726d48Sopenharmony_ci        border-collapse: collapse;
419fb726d48Sopenharmony_ci        margin: 15px 0.1px 20px 0.1px;
420fb726d48Sopenharmony_ci        border-spacing: 0;
421fb726d48Sopenharmony_ci      }
422fb726d48Sopenharmony_ci
423fb726d48Sopenharmony_ci      html body table th {
424fb726d48Sopenharmony_ci        font-weight: bold;
425fb726d48Sopenharmony_ci        color: #000000;
426fb726d48Sopenharmony_ci      }
427fb726d48Sopenharmony_ci
428fb726d48Sopenharmony_ci      html body table td,
429fb726d48Sopenharmony_ci      html body table th {
430fb726d48Sopenharmony_ci        border: 1px solid #d6d6d6;
431fb726d48Sopenharmony_ci        padding: 2px 14px;
432fb726d48Sopenharmony_ci      }
433fb726d48Sopenharmony_ci
434fb726d48Sopenharmony_ci      html body dl {
435fb726d48Sopenharmony_ci        padding: 0px;
436fb726d48Sopenharmony_ci      }
437fb726d48Sopenharmony_ci
438fb726d48Sopenharmony_ci      html body dl dt {
439fb726d48Sopenharmony_ci        padding: 0px;
440fb726d48Sopenharmony_ci        margin-top: 15px;
441fb726d48Sopenharmony_ci        font-size: 0.9em;
442fb726d48Sopenharmony_ci        font-style: italic;
443fb726d48Sopenharmony_ci        font-weight: bold;
444fb726d48Sopenharmony_ci      }
445fb726d48Sopenharmony_ci
446fb726d48Sopenharmony_ci      html body dl dd {
447fb726d48Sopenharmony_ci        padding: 0px 17px;
448fb726d48Sopenharmony_ci        margin-bottom: 17px;
449fb726d48Sopenharmony_ci      }
450fb726d48Sopenharmony_ci
451fb726d48Sopenharmony_ci      html body code {
452fb726d48Sopenharmony_ci        font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
453fb726d48Sopenharmony_ci        font-size: 0.86em !important;
454fb726d48Sopenharmony_ci        color: #000000;
455fb726d48Sopenharmony_ci        background-color: #f0f0f0;
456fb726d48Sopenharmony_ci        border-radius: 4px;
457fb726d48Sopenharmony_ci        padding: 0.3em 0px;
458fb726d48Sopenharmony_ci      }
459fb726d48Sopenharmony_ci
460fb726d48Sopenharmony_ci      html body code::before,
461fb726d48Sopenharmony_ci      html body code::after {
462fb726d48Sopenharmony_ci        letter-spacing: -0.1em;
463fb726d48Sopenharmony_ci        content: '\00a0';
464fb726d48Sopenharmony_ci      }
465fb726d48Sopenharmony_ci
466fb726d48Sopenharmony_ci      html body pre > code {
467fb726d48Sopenharmony_ci        padding: 1px;
468fb726d48Sopenharmony_ci        margin: 0px;
469fb726d48Sopenharmony_ci        font-size: 0.86em !important;
470fb726d48Sopenharmony_ci        word-break: normal;
471fb726d48Sopenharmony_ci        white-space: pre;
472fb726d48Sopenharmony_ci        background: transparent;
473fb726d48Sopenharmony_ci        border: 0px;
474fb726d48Sopenharmony_ci      }
475fb726d48Sopenharmony_ci
476fb726d48Sopenharmony_ci      html body .highlight {
477fb726d48Sopenharmony_ci        margin-bottom: 17px;
478fb726d48Sopenharmony_ci      }
479fb726d48Sopenharmony_ci
480fb726d48Sopenharmony_ci      html body .highlight pre,
481fb726d48Sopenharmony_ci      html body pre {
482fb726d48Sopenharmony_ci        padding: 0.9em;
483fb726d48Sopenharmony_ci        overflow: auto;
484fb726d48Sopenharmony_ci        font-size: 0.86em !important;
485fb726d48Sopenharmony_ci        line-height: 1.46;
486fb726d48Sopenharmony_ci        border: #d6d6d6;
487fb726d48Sopenharmony_ci        border-radius: 4px;
488fb726d48Sopenharmony_ci      }
489fb726d48Sopenharmony_ci
490fb726d48Sopenharmony_ci      html body .highlight pre {
491fb726d48Sopenharmony_ci        margin-bottom: 0px;
492fb726d48Sopenharmony_ci        word-break: normal;
493fb726d48Sopenharmony_ci      }
494fb726d48Sopenharmony_ci
495fb726d48Sopenharmony_ci      html body pre code,
496fb726d48Sopenharmony_ci      html body pre tt {
497fb726d48Sopenharmony_ci        display: inline;
498fb726d48Sopenharmony_ci        max-width: initial;
499fb726d48Sopenharmony_ci        padding: 1px;
500fb726d48Sopenharmony_ci        margin: 1px;
501fb726d48Sopenharmony_ci        overflow: initial;
502fb726d48Sopenharmony_ci        line-height: inherit;
503fb726d48Sopenharmony_ci        word-wrap: normal;
504fb726d48Sopenharmony_ci        background-color: transparent;
505fb726d48Sopenharmony_ci        border: 1px;
506fb726d48Sopenharmony_ci      }
507fb726d48Sopenharmony_ci
508fb726d48Sopenharmony_ci      html body pre code:before,
509fb726d48Sopenharmony_ci      html body pre tt:before,
510fb726d48Sopenharmony_ci      html body pre code:after,
511fb726d48Sopenharmony_ci      html body pre tt:after {
512fb726d48Sopenharmony_ci        content: normal;
513fb726d48Sopenharmony_ci      }
514fb726d48Sopenharmony_ci
515fb726d48Sopenharmony_ci      html body p,
516fb726d48Sopenharmony_ci      html body blockquote,
517fb726d48Sopenharmony_ci      html body ul,
518fb726d48Sopenharmony_ci      html body ol,
519fb726d48Sopenharmony_ci      html body dl,
520fb726d48Sopenharmony_ci      html body pre {
521fb726d48Sopenharmony_ci        margin-top: 1px;
522fb726d48Sopenharmony_ci        margin-bottom: 17px;
523fb726d48Sopenharmony_ci      }
524fb726d48Sopenharmony_ci
525fb726d48Sopenharmony_ci      html body kbd {
526fb726d48Sopenharmony_ci        color: #000000;
527fb726d48Sopenharmony_ci        border: 3px solid #d6d6d6;
528fb726d48Sopenharmony_ci        border-bottom: 3px solid #c7c7c7;
529fb726d48Sopenharmony_ci        padding: 3px 5px;
530fb726d48Sopenharmony_ci        background-color: #f0f0f0;
531fb726d48Sopenharmony_ci        border-radius: 2px;
532fb726d48Sopenharmony_ci      }
533fb726d48Sopenharmony_ci
534fb726d48Sopenharmony_ci      @media print {
535fb726d48Sopenharmony_ci        html body {
536fb726d48Sopenharmony_ci          background-color: #ffffff;
537fb726d48Sopenharmony_ci        }
538fb726d48Sopenharmony_ci
539fb726d48Sopenharmony_ci        html body h1,
540fb726d48Sopenharmony_ci        html body h2,
541fb726d48Sopenharmony_ci        html body h3,
542fb726d48Sopenharmony_ci        html body h4,
543fb726d48Sopenharmony_ci        html body h5,
544fb726d48Sopenharmony_ci        html body h6 {
545fb726d48Sopenharmony_ci          color: #000000;
546fb726d48Sopenharmony_ci          page-break-after: avoid;
547fb726d48Sopenharmony_ci        }
548fb726d48Sopenharmony_ci
549fb726d48Sopenharmony_ci        html body blockquote {
550fb726d48Sopenharmony_ci          color: #5c5c53;
551fb726d48Sopenharmony_ci        }
552fb726d48Sopenharmony_ci
553fb726d48Sopenharmony_ci        html body pre {
554fb726d48Sopenharmony_ci          page-break-inside: avoid;
555fb726d48Sopenharmony_ci        }
556fb726d48Sopenharmony_ci
557fb726d48Sopenharmony_ci        html body table {
558fb726d48Sopenharmony_ci          display: table;
559fb726d48Sopenharmony_ci        }
560fb726d48Sopenharmony_ci
561fb726d48Sopenharmony_ci        html body img {
562fb726d48Sopenharmony_ci          display: block;
563fb726d48Sopenharmony_ci          max-width: 99%;
564fb726d48Sopenharmony_ci          max-height: 99%;
565fb726d48Sopenharmony_ci        }
566fb726d48Sopenharmony_ci
567fb726d48Sopenharmony_ci        html body pre,
568fb726d48Sopenharmony_ci        html body code {
569fb726d48Sopenharmony_ci          word-wrap: break-word;
570fb726d48Sopenharmony_ci          white-space: pre;
571fb726d48Sopenharmony_ci        }
572fb726d48Sopenharmony_ci      }
573fb726d48Sopenharmony_ci
574fb726d48Sopenharmony_ci      .smartperf-preview {
575fb726d48Sopenharmony_ci        width: 68vw;
576fb726d48Sopenharmony_ci        height: 99%;
577fb726d48Sopenharmony_ci        box-sizing: border-box;
578fb726d48Sopenharmony_ci        overflow: hidden;
579fb726d48Sopenharmony_ci        background-color: #fff;
580fb726d48Sopenharmony_ci      }
581fb726d48Sopenharmony_ci
582fb726d48Sopenharmony_ci      .smartperf-preview .pagebreak,
583fb726d48Sopenharmony_ci      .smartperf-preview .newpage {
584fb726d48Sopenharmony_ci        page-break-before: always;
585fb726d48Sopenharmony_ci      }
586fb726d48Sopenharmony_ci
587fb726d48Sopenharmony_ci      .smartperf-preview pre.line-numbers {
588fb726d48Sopenharmony_ci        position: relative;
589fb726d48Sopenharmony_ci        padding-left: 3.7em;
590fb726d48Sopenharmony_ci        counter-reset: linenumber;
591fb726d48Sopenharmony_ci      }
592fb726d48Sopenharmony_ci
593fb726d48Sopenharmony_ci      .smartperf-preview pre.line-numbers > code {
594fb726d48Sopenharmony_ci        position: relative;
595fb726d48Sopenharmony_ci      }
596fb726d48Sopenharmony_ci
597fb726d48Sopenharmony_ci      .smartperf-preview pre.line-numbers .line-numbers-rows {
598fb726d48Sopenharmony_ci        position: absolute;
599fb726d48Sopenharmony_ci        pointer-events: none;
600fb726d48Sopenharmony_ci        top: 0.9em;
601fb726d48Sopenharmony_ci        font-size: 99%;
602fb726d48Sopenharmony_ci        left: 1px;
603fb726d48Sopenharmony_ci        width: 3em;
604fb726d48Sopenharmony_ci        letter-spacing: -1px;
605fb726d48Sopenharmony_ci        border-right: 1px solid #999;
606fb726d48Sopenharmony_ci        -webkit-user-select: none;
607fb726d48Sopenharmony_ci        -moz-user-select: none;
608fb726d48Sopenharmony_ci        -ms-user-select: none;
609fb726d48Sopenharmony_ci        user-select: none;
610fb726d48Sopenharmony_ci      }
611fb726d48Sopenharmony_ci
612fb726d48Sopenharmony_ci      .smartperf-preview pre.line-numbers .line-numbers-rows > span {
613fb726d48Sopenharmony_ci        pointer-events: none;
614fb726d48Sopenharmony_ci        display: block;
615fb726d48Sopenharmony_ci        counter-increment: linenumber;
616fb726d48Sopenharmony_ci      }
617fb726d48Sopenharmony_ci
618fb726d48Sopenharmony_ci      .smartperf-preview pre.line-numbers .line-numbers-rows > span:before {
619fb726d48Sopenharmony_ci        content: counter(linenumber);
620fb726d48Sopenharmony_ci        color: #999;
621fb726d48Sopenharmony_ci        display: block;
622fb726d48Sopenharmony_ci        padding-right: 0.79em;
623fb726d48Sopenharmony_ci        text-align: right;
624fb726d48Sopenharmony_ci      }
625fb726d48Sopenharmony_ci
626fb726d48Sopenharmony_ci      .smartperf-preview .mathjax-exps .MathJax_Display {
627fb726d48Sopenharmony_ci        text-align: center !important;
628fb726d48Sopenharmony_ci      }
629fb726d48Sopenharmony_ci
630fb726d48Sopenharmony_ci      .smartperf-preview:not([for='preview']) .code-chunk .btn-group {
631fb726d48Sopenharmony_ci        display: none;
632fb726d48Sopenharmony_ci      }
633fb726d48Sopenharmony_ci
634fb726d48Sopenharmony_ci      .smartperf-preview:not([for='preview']) .code-chunk .status {
635fb726d48Sopenharmony_ci        display: none;
636fb726d48Sopenharmony_ci      }
637fb726d48Sopenharmony_ci
638fb726d48Sopenharmony_ci      .smartperf-preview:not([for='preview']) .code-chunk .output-div {
639fb726d48Sopenharmony_ci        margin-bottom: 16px;
640fb726d48Sopenharmony_ci      }
641fb726d48Sopenharmony_ci
642fb726d48Sopenharmony_ci      .scrollbar-style::-webkit-scrollbar {
643fb726d48Sopenharmony_ci        width: 8px;
644fb726d48Sopenharmony_ci      }
645fb726d48Sopenharmony_ci
646fb726d48Sopenharmony_ci      .scrollbar-style::-webkit-scrollbar-track {
647fb726d48Sopenharmony_ci        border-radius: 9px;
648fb726d48Sopenharmony_ci        background-color: transparent;
649fb726d48Sopenharmony_ci      }
650fb726d48Sopenharmony_ci
651fb726d48Sopenharmony_ci      .scrollbar-style::-webkit-scrollbar-thumb {
652fb726d48Sopenharmony_ci        border-radius: 6px;
653fb726d48Sopenharmony_ci        background-color: rgba(150, 150, 150, 1);
654fb726d48Sopenharmony_ci        border: 4px solid rgba(150, 150, 150, 1);
655fb726d48Sopenharmony_ci        background-clip: content-box;
656fb726d48Sopenharmony_ci      }
657fb726d48Sopenharmony_ci
658fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm]) {
659fb726d48Sopenharmony_ci        position: relative;
660fb726d48Sopenharmony_ci        width: 99%;
661fb726d48Sopenharmony_ci        height: 99%;;
662fb726d48Sopenharmony_ci        overflow: auto;
663fb726d48Sopenharmony_ci      }
664fb726d48Sopenharmony_ci
665fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm]) .smartperf-preview {
666fb726d48Sopenharmony_ci        position: relative;
667fb726d48Sopenharmony_ci        top: 1px;
668fb726d48Sopenharmony_ci      }
669fb726d48Sopenharmony_ci
670fb726d48Sopenharmony_ci      @media screen and (min-width: 914px) {
671fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm]) .smartperf-preview {
672fb726d48Sopenharmony_ci          padding: 2em;
673fb726d48Sopenharmony_ci        }
674fb726d48Sopenharmony_ci      }
675fb726d48Sopenharmony_ci
676fb726d48Sopenharmony_ci      @media screen and (max-width: 914px) {
677fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm]) .smartperf-preview {
678fb726d48Sopenharmony_ci          padding: 1.9em;
679fb726d48Sopenharmony_ci        }
680fb726d48Sopenharmony_ci      }
681fb726d48Sopenharmony_ci
682fb726d48Sopenharmony_ci      @media screen and (max-width: 450px) {
683fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm]) .smartperf-preview {
684fb726d48Sopenharmony_ci          font-size: 15px !important;
685fb726d48Sopenharmony_ci          padding: 1.1em;
686fb726d48Sopenharmony_ci        }
687fb726d48Sopenharmony_ci      }
688fb726d48Sopenharmony_ci
689fb726d48Sopenharmony_ci      @media print {
690fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
691fb726d48Sopenharmony_ci          display: none;
692fb726d48Sopenharmony_ci        }
693fb726d48Sopenharmony_ci      }
694fb726d48Sopenharmony_ci
695fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
696fb726d48Sopenharmony_ci        position: fixed;
697fb726d48Sopenharmony_ci        bottom: 9px;
698fb726d48Sopenharmony_ci        left: 9px;
699fb726d48Sopenharmony_ci        font-size: 28px;
700fb726d48Sopenharmony_ci        cursor: pointer;
701fb726d48Sopenharmony_ci        color: inherit;
702fb726d48Sopenharmony_ci        z-index: 99;
703fb726d48Sopenharmony_ci        width: 31px;
704fb726d48Sopenharmony_ci        text-align: center;
705fb726d48Sopenharmony_ci        opacity: 0.5;
706fb726d48Sopenharmony_ci      }
707fb726d48Sopenharmony_ci
708fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn {
709fb726d48Sopenharmony_ci        opacity: 1;
710fb726d48Sopenharmony_ci      }
711fb726d48Sopenharmony_ci
712fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc {
713fb726d48Sopenharmony_ci        position: fixed;
714fb726d48Sopenharmony_ci        top: 1px;
715fb726d48Sopenharmony_ci        left: 1px;
716fb726d48Sopenharmony_ci        width: 300px;
717fb726d48Sopenharmony_ci        height: 99%;
718fb726d48Sopenharmony_ci        padding: 32px 0 48px 0;
719fb726d48Sopenharmony_ci        font-size: 14px;
720fb726d48Sopenharmony_ci        box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33);
721fb726d48Sopenharmony_ci        box-sizing: border-box;
722fb726d48Sopenharmony_ci        overflow: auto;
723fb726d48Sopenharmony_ci        background-color: inherit;
724fb726d48Sopenharmony_ci      }
725fb726d48Sopenharmony_ci
726fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar {
727fb726d48Sopenharmony_ci        width: 9px;
728fb726d48Sopenharmony_ci      }
729fb726d48Sopenharmony_ci
730fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track {
731fb726d48Sopenharmony_ci        border-radius: 11px;
732fb726d48Sopenharmony_ci        background-color: transparent;
733fb726d48Sopenharmony_ci      }
734fb726d48Sopenharmony_ci
735fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb {
736fb726d48Sopenharmony_ci        border-radius: 6px;
737fb726d48Sopenharmony_ci        background-color: rgba(150, 150, 150, 0.66);
738fb726d48Sopenharmony_ci        border: 3px solid rgba(150, 150, 150, 0.66);
739fb726d48Sopenharmony_ci        background-clip: content-box;
740fb726d48Sopenharmony_ci      }
741fb726d48Sopenharmony_ci
742fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a {
743fb726d48Sopenharmony_ci        text-decoration: none;
744fb726d48Sopenharmony_ci      }
745fb726d48Sopenharmony_ci
746fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
747fb726d48Sopenharmony_ci        padding: 1px 1.7em;
748fb726d48Sopenharmony_ci        margin-top: 0.9em;
749fb726d48Sopenharmony_ci      }
750fb726d48Sopenharmony_ci
751fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li {
752fb726d48Sopenharmony_ci        margin-bottom: 0.8em;
753fb726d48Sopenharmony_ci      }
754fb726d48Sopenharmony_ci
755fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
756fb726d48Sopenharmony_ci        list-style-type: none;
757fb726d48Sopenharmony_ci      }
758fb726d48Sopenharmony_ci
759fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
760fb726d48Sopenharmony_ci        left: 301px;
761fb726d48Sopenharmony_ci        width: calc(100% - 300px);
762fb726d48Sopenharmony_ci        padding: 2em calc(50% - 457px - 150px);
763fb726d48Sopenharmony_ci        margin: 1px;
764fb726d48Sopenharmony_ci        box-sizing: border-box;
765fb726d48Sopenharmony_ci      }
766fb726d48Sopenharmony_ci
767fb726d48Sopenharmony_ci      @media screen and (max-width: 1274px) {
768fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
769fb726d48Sopenharmony_ci          padding: 1.9em;
770fb726d48Sopenharmony_ci        }
771fb726d48Sopenharmony_ci      }
772fb726d48Sopenharmony_ci
773fb726d48Sopenharmony_ci      @media screen and (max-width: 450px) {
774fb726d48Sopenharmony_ci        html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
775fb726d48Sopenharmony_ci          width: 99%;
776fb726d48Sopenharmony_ci        }
777fb726d48Sopenharmony_ci      }
778fb726d48Sopenharmony_ci
779fb726d48Sopenharmony_ci      html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc {
780fb726d48Sopenharmony_ci        display: none;
781fb726d48Sopenharmony_ci      }
782fb726d48Sopenharmony_ci    </style>
783fb726d48Sopenharmony_ci  </head>
784fb726d48Sopenharmony_ci  <body for="html-export" id="body" style="margin:0">
785fb726d48Sopenharmony_ci    <div class="smartperf smartperf-preview" style="min-height: 99vh;">
786fb726d48Sopenharmony_ci      <h1 class="mume-header fontColor">web端加载trace说明</h1>
787fb726d48Sopenharmony_ci
788fb726d48Sopenharmony_ci      <p class="fontColor">从web端查看trace文件,进行性能检测的分析。</p>
789fb726d48Sopenharmony_ci      <h2 class="mume-header fontColor" id="header-index-1">文件加载入口</h2>
790fb726d48Sopenharmony_ci
791fb726d48Sopenharmony_ci      <p class="fontColor">
792fb726d48Sopenharmony_ci        将抓取的trace导入查看。
793fb726d48Sopenharmony_ci        <br />
794fb726d48Sopenharmony_ci        <img src="../figures/Web/opentrace.png" alt="GitHub Logo" />
795fb726d48Sopenharmony_ci      </p>
796fb726d48Sopenharmony_ci      <p class="fontColor">说明:</p>
797fb726d48Sopenharmony_ci      <ul class="fontColor">
798fb726d48Sopenharmony_ci        <li>Open trace file:导入离线trace文件入口。</li>
799fb726d48Sopenharmony_ci        <li>Open long trace:导入大文件入口。</li>
800fb726d48Sopenharmony_ci        <li>Record new trace:抓取新的trace文件入口。</li>
801fb726d48Sopenharmony_ci        <li>Record template:抓取指定模块的trace入口。</li>
802fb726d48Sopenharmony_ci      </ul>
803fb726d48Sopenharmony_ci      <h2 class="mume-header fontColor" id="header-index-2">导入trace文件后显示页面</h2>
804fb726d48Sopenharmony_ci
805fb726d48Sopenharmony_ci      <p class="fontColor">
806fb726d48Sopenharmony_ci        <img src="../figures/Web/trace.jpg" alt="GitHub Logo" />
807fb726d48Sopenharmony_ci        <br />
808fb726d48Sopenharmony_ci        说明:
809fb726d48Sopenharmony_ci      </p>
810fb726d48Sopenharmony_ci      <ul class="fontColor">
811fb726d48Sopenharmony_ci        <li>
812fb726d48Sopenharmony_ci          操作说明:在当前页面可以通过键盘上的wasd四个键位操作当前的时间轴进行缩放,w为放大,s为缩小,a为左移,d为右移。
813fb726d48Sopenharmony_ci        </li>
814fb726d48Sopenharmony_ci      </ul>
815fb726d48Sopenharmony_ci      <h2 class="mume-header fontColor" id="header-index-3">trace功能介绍</h2>
816fb726d48Sopenharmony_ci
817fb726d48Sopenharmony_ci      <p class="fontColor">
818fb726d48Sopenharmony_ci        trace模块从上往下主要展示时间轴、cpu使用率、cpu使用情况、进程间通讯数据的方法调用情况、进程、线程和方法调用情况。
819fb726d48Sopenharmony_ci      </p>
820fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-4">时间轴和cpu使用率</h3>
821fb726d48Sopenharmony_ci
822fb726d48Sopenharmony_ci      <p class="fontColor">
823fb726d48Sopenharmony_ci        <img src="../figures/Web/time.jpg" alt="GitHub Logo" />
824fb726d48Sopenharmony_ci        <br />
825fb726d48Sopenharmony_ci        最上方带刻度的为时间轴,主要展示当前抓取数据的总时长和时间刻度的分布情况,如上图所示,左下角展示总时长。
826fb726d48Sopenharmony_ci        <br />
827fb726d48Sopenharmony_ci        中间区域展示的是抓取数据时间段内的cpu使用率,颜色越深代表cpu使用率越高,颜色越浅代表cpu使用率越低。
828fb726d48Sopenharmony_ci        <br />
829fb726d48Sopenharmony_ci        <img src="../figures/Web/highlit.jpg" alt="GitHub Logo" />
830fb726d48Sopenharmony_ci        <br />
831fb726d48Sopenharmony_ci        在白色背景时间轴区域内点击后拖拽鼠标,对从鼠标按下到拖拽完成鼠标松开的区域内的数据进行筛选,高亮显示的部分为当前所选区域,如上图所示。
832fb726d48Sopenharmony_ci      </p>
833fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-5">cpu使用情况</h3>
834fb726d48Sopenharmony_ci
835fb726d48Sopenharmony_ci      <p class="fontColor"><img src="../figures/Web/cpu.jpg" alt="GitHub Logo" /></p>
836fb726d48Sopenharmony_ci      <p class="fontColor">
837fb726d48Sopenharmony_ci        如上图所示,当前抓取数据有4个cpu工作,前四组数据对应的是当前调用cpu的线程和对应的进程情况,以颜色作为区分。后四组数据则为cpu的使用频率信息。鼠标移动到相应的线程,还会将该线程对应的进程全部置为高亮,同时其他的进程会置灰,如下图所示。
838fb726d48Sopenharmony_ci        <br />
839fb726d48Sopenharmony_ci        <img src="../figures/Web/gray.jpg" alt="GitHub Logo" />
840fb726d48Sopenharmony_ci      </p>
841fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">cpu使用情况的框选功能</h4>
842fb726d48Sopenharmony_ci
843fb726d48Sopenharmony_ci      <p class="fontColor">
844fb726d48Sopenharmony_ci        可以对cpu的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有六个tab页。
845fb726d48Sopenharmony_ci        <br />
846fb726d48Sopenharmony_ci        CPU by
847fb726d48Sopenharmony_ci        thread的Tab页,主要显示了在框选时间区间内的进程名、进程号、线程名、线程号、总运行时长、平均运行时长和调度次数信息。
848fb726d48Sopenharmony_ci        <br />
849fb726d48Sopenharmony_ci        <img src="../figures/Web/cpubythread.jpg" alt="GitHub Logo" />
850fb726d48Sopenharmony_ci        <br />
851fb726d48Sopenharmony_ci        CPU by process的Tab页,主要显示了在框选时间区间内的进程名、进程号、总运行时长、平均运行时长和调度次数信息。
852fb726d48Sopenharmony_ci        <br />
853fb726d48Sopenharmony_ci        <img src="../figures/Web/cpubyprocess.jpg" alt="GitHub Logo" />
854fb726d48Sopenharmony_ci        <br />
855fb726d48Sopenharmony_ci        CPU Usage的Tab页,主要显示了在框选时间区间内,各个cpu频率时间占比前三的信息。
856fb726d48Sopenharmony_ci        <br />
857fb726d48Sopenharmony_ci        <img src="../figures/Web/cpusage.jpg" alt="GitHub Logo" />
858fb726d48Sopenharmony_ci        <br />
859fb726d48Sopenharmony_ci        Thread
860fb726d48Sopenharmony_ci        Switches的Tab页,按照状态&gt;进程&gt;线程,统计对应状态下的次数,持续时长,最小时长,平均时长,最大时长信息。
861fb726d48Sopenharmony_ci        <br />
862fb726d48Sopenharmony_ci        <img src="../figures/Web/threadswitches.jpg" alt="GitHub Logo" />
863fb726d48Sopenharmony_ci        <br />
864fb726d48Sopenharmony_ci        Thread
865fb726d48Sopenharmony_ci        States的Tab页,按进程&gt;线程&gt;状态的维度去统计,需要呈现该状态的线程名、进入该状态次数、该状态下时长、最小时长、平均时长、最大时长。
866fb726d48Sopenharmony_ci        <br />
867fb726d48Sopenharmony_ci        <img src="../figures/Web/threadstates.jpg" alt="GitHub Logo" />
868fb726d48Sopenharmony_ci        <br />
869fb726d48Sopenharmony_ci        Sched
870fb726d48Sopenharmony_ci        Priority的Tab页,按优先级大小显示调度,显示框选范围内所有Running以及Running之前的Runnable线程的数量,持续时长,最小,最大,平均耗时。
871fb726d48Sopenharmony_ci        <br />
872fb726d48Sopenharmony_ci        <img src="../figures/Web/schedpritab.jpg" alt="GitHub Logo" />
873fb726d48Sopenharmony_ci        <br />
874fb726d48Sopenharmony_ci        Thread States、Thread
875fb726d48Sopenharmony_ci        Switches的2个Tab页,鼠标移动到某一行,鼠标会变成一个小手的标志,并且会高亮,点击一下,就会进入辅助信息界面,会将选中行的辅助信息展示出来,包括开始时间、进程、线程、线程状态、对应的CPU、优先级等信息如下图。
876fb726d48Sopenharmony_ci        <br />
877fb726d48Sopenharmony_ci        <img src="../figures/Web/details.jpg" alt="GitHub Logo" />
878fb726d48Sopenharmony_ci      </p>
879fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">cpu使用情况的单选功能</h4>
880fb726d48Sopenharmony_ci
881fb726d48Sopenharmony_ci      <p class="fontColor">
882fb726d48Sopenharmony_ci        单选CPU使用情况数据会在选中的色块外层加上深色边框,能够突出当前选中色块,弹出层中会展示当前CPU上的进程名,线程名,开始时间的相对时间,开始时间的绝对时间,运行时长,优先级,线程结束状态信息。
883fb726d48Sopenharmony_ci        <br />
884fb726d48Sopenharmony_ci        <img src="../figures/Web/cpuclick.jpg" alt="GitHub Logo" />
885fb726d48Sopenharmony_ci      </p>
886fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-6">线程唤醒关系树</h3>
887fb726d48Sopenharmony_ci
888fb726d48Sopenharmony_ci      <p class="fontColor">
889fb726d48Sopenharmony_ci        线程唤醒关系树功能是点击GetWakeupList会以链式结构和表格分别在泳道图和tab上展示线程的唤醒关系树信息,点击GetWakeupList按钮旁边的星号按钮可以对唤醒树对应的泳道图一键收藏,对优先级最低且运行时长最长或者运行时长最长的线程会以红色字体高亮显示。
890fb726d48Sopenharmony_ci        <br />
891fb726d48Sopenharmony_ci        <img src="../figures/Web/threadtree.jpg" alt="GitHub Logo" />
892fb726d48Sopenharmony_ci      </p>
893fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-7">进程、线程和方法数据</h3>
894fb726d48Sopenharmony_ci
895fb726d48Sopenharmony_ci      <p class="fontColor">
896fb726d48Sopenharmony_ci        下图是进程数据,左边部分展示进程名称和id,右边显示线程切换关系,线程的调用方法,进程间内存信息等。
897fb726d48Sopenharmony_ci        <br />
898fb726d48Sopenharmony_ci        <img src="../figures/Web/process.jpg" alt="GitHub Logo" />
899fb726d48Sopenharmony_ci        <br />
900fb726d48Sopenharmony_ci        点击进程名前面箭头可以展开对应的线程进行查看,展开后的线程如下图,如果存在堆内存占用情况,会显示出对应泳道图,如果出现两个名字和id一样的线程,则第一个为线程的使用情况,第二个为线程内的方法栈调用情况。
901fb726d48Sopenharmony_ci        <br />
902fb726d48Sopenharmony_ci        <img src="../figures/Web/threadinfo.jpg" alt="GitHub Logo" />
903fb726d48Sopenharmony_ci      </p>
904fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">进程、线程和方法数据的框选功能</h4>
905fb726d48Sopenharmony_ci
906fb726d48Sopenharmony_ci      <p class="fontColor">
907fb726d48Sopenharmony_ci        可以对线程的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,包含线程运行状态,线程调用栈的统计情况。当框选的数据中同时存在线程运行状态和线程调用栈数据,下方的弹出层中就会出现多个tab选项,可以进行切换。
908fb726d48Sopenharmony_ci      </p>
909fb726d48Sopenharmony_ci      <p class="fontColor">
910fb726d48Sopenharmony_ci        下图是线程运行状态框选统计信息,包括进程名、进程号、线程名、线程号、线程状态、状态持续时间、平均持续时间、该线程状态发生的次数。
911fb726d48Sopenharmony_ci        <br />
912fb726d48Sopenharmony_ci        <img src="../figures/Web/threadselect.jpg" alt="GitHub Logo" />
913fb726d48Sopenharmony_ci      </p>
914fb726d48Sopenharmony_ci      <p class="fontColor">
915fb726d48Sopenharmony_ci        下图是线程调用栈框选统计信息,包括方法名、持续时间、平均持续时间、调用的次数。
916fb726d48Sopenharmony_ci        <br />
917fb726d48Sopenharmony_ci        <img src="../figures/Web/callstackselect.jpg" alt="GitHub Logo" />
918fb726d48Sopenharmony_ci      </p>
919fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">进程、线程和方法数据的单选功能</h4>
920fb726d48Sopenharmony_ci
921fb726d48Sopenharmony_ci      <p class="fontColor">
922fb726d48Sopenharmony_ci        单选线程的state数据时,会展示当前选中线程的状态数据,开始时间(相对和绝对时间)和持续时长,线程状态,所在进程名称,选中状态的前一个状态,选中状态的后一个状态。
923fb726d48Sopenharmony_ci        <br />
924fb726d48Sopenharmony_ci        <img src="../figures/Web/threadclick.jpg" alt="GitHub Logo" />
925fb726d48Sopenharmony_ci        <br />
926fb726d48Sopenharmony_ci        单选调用栈数据,单击方法会在选中的方法外层加上黑色边框,能够突出当前选中的方法,弹出层中会展示当前方法的名称、开始时间(相对和绝对时间)和运行时长信息,调用栈深度。
927fb726d48Sopenharmony_ci        <br />
928fb726d48Sopenharmony_ci        <img src="../figures/Web/callstackclick.jpg" alt="GitHub Logo" />
929fb726d48Sopenharmony_ci      </p>
930fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">线程的跳转功能</h4>
931fb726d48Sopenharmony_ci
932fb726d48Sopenharmony_ci      <p class="fontColor">
933fb726d48Sopenharmony_ci        点击画红框处的带箭头的标志,会从CPU的线程概览视图跳转到线程的详情视图,同时从线程的详情视图也能跳转到CPU的线程概览视图。
934fb726d48Sopenharmony_ci        <br />
935fb726d48Sopenharmony_ci        <img src="../figures/Web/jumpthread.jpg" alt="GitHub Logo" />
936fb726d48Sopenharmony_ci      </p>
937fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">获取频点的busy_time</h4>
938fb726d48Sopenharmony_ci
939fb726d48Sopenharmony_ci      <p class="fontColor">
940fb726d48Sopenharmony_ci        框选Cpu Frequency泳道的Tab页有GetBusyTime的按钮,该按钮获取每个频点在Cpu
941fb726d48Sopenharmony_ci        State等于0时的时间信息,体现频点的忙碌时间。
942fb726d48Sopenharmony_ci        <br />
943fb726d48Sopenharmony_ci        <img src="../figures/Web/getbusytime.jpg" alt="GitHub Logo" />
944fb726d48Sopenharmony_ci      </p>
945fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">CPU频点数据切割</h4>
946fb726d48Sopenharmony_ci
947fb726d48Sopenharmony_ci      <p class="fontColor">
948fb726d48Sopenharmony_ci        框选区域内所有running状态的频点数据,以用户输入的某一方法作为切割依据,将频点数据以Single和Loop两种方式切割后展示在Tab标签页的表格中。
949fb726d48Sopenharmony_ci        <br />
950fb726d48Sopenharmony_ci        <img src="../figures/Web/Singe_loop.jpg" alt="GitHub Logo" />
951fb726d48Sopenharmony_ci      </p>
952fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">关键路径标识</h4>
953fb726d48Sopenharmony_ci
954fb726d48Sopenharmony_ci      <p class="fontColor">
955fb726d48Sopenharmony_ci        在ftrace数据中的cpu泳道的区域,在界面顶部增加json文件导入按钮,导入json文件后,根据线程号跟对应的时间,在cpu区域高亮该时间的线程色块,点击界面上的x,可以取消高亮。json格式如下:
956fb726d48Sopenharmony_ci        <br />
957fb726d48Sopenharmony_ci        <img src="../figures/Web/json.jpg" alt="GitHub Logo" />
958fb726d48Sopenharmony_ci        <br />
959fb726d48Sopenharmony_ci        导入json文件以后,会将ACCS0 [2716]线程对应时间点的slice色块高亮显示
960fb726d48Sopenharmony_ci        <br />
961fb726d48Sopenharmony_ci        <img src="../figures/Web/keyslice.jpg" alt="GitHub Logo" />
962fb726d48Sopenharmony_ci      </p>
963fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-8">trace的其他功能</h3>
964fb726d48Sopenharmony_ci
965fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">小旗标志的功能</h4>
966fb726d48Sopenharmony_ci
967fb726d48Sopenharmony_ci      <p class="fontColor">
968fb726d48Sopenharmony_ci        将选中数据的时间点通过小旗的方式在时间轴上展示,直观的展示选中数据的时间。
969fb726d48Sopenharmony_ci        <br />
970fb726d48Sopenharmony_ci        <img src="../figures/Web/flag.jpg" alt="GitHub Logo" />
971fb726d48Sopenharmony_ci      </p>
972fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">勾选功能</h4>
973fb726d48Sopenharmony_ci
974fb726d48Sopenharmony_ci      <p class="fontColor">
975fb726d48Sopenharmony_ci        框选某一区域,该区域左边会出现CheckBox的复选框,选中的区域的复选框会出现打勾的状态,可以取消勾选,也可以重新勾选。
976fb726d48Sopenharmony_ci        <br />
977fb726d48Sopenharmony_ci        <img src="../figures/Web/checkbox.jpg" alt="GitHub Logo" />
978fb726d48Sopenharmony_ci      </p>
979fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor">搜索功能</h4>
980fb726d48Sopenharmony_ci
981fb726d48Sopenharmony_ci      <p class="fontColor">
982fb726d48Sopenharmony_ci        在搜索框中,可以输入线程,线程号等搜索自己想要的信息,搜索完成会高亮显示。
983fb726d48Sopenharmony_ci        <br />
984fb726d48Sopenharmony_ci        <img src="../figures/Web/search.jpg" alt="GitHub Logo" />
985fb726d48Sopenharmony_ci        <br />
986fb726d48Sopenharmony_ci        在搜索框中输入调用栈的方法名,会跳转到对应的调用栈。
987fb726d48Sopenharmony_ci        <br />
988fb726d48Sopenharmony_ci        <img src="../figures/Web/searchcallstack.jpg" alt="GitHub Logo" />
989fb726d48Sopenharmony_ci      </p>
990fb726d48Sopenharmony_ci      <h3 class="mume-header fontColor" id="header-index-9">Tab页信息和泳道图可跳转(点击和框选场景,框选类似搜索)</h3>
991fb726d48Sopenharmony_ci
992fb726d48Sopenharmony_ci      <p class="fontColor">
993fb726d48Sopenharmony_ci        泳道图高亮场景:框选Cpu Frequency 或者Cpu State泳道图后,弹出Cpu Frequency或Cpu State
994fb726d48Sopenharmony_ci        Tab页,在点击Tab页表格的行时,框选范围泳道图的当前行的Value值一样的部分上方会出现一条以圆点开头颜色比趋势图颜色同色但稍深的粗线条,如下图:
995fb726d48Sopenharmony_ci        <br />
996fb726d48Sopenharmony_ci        <img src="../figures/Web/Tabskill.jpg" alt="GitHub Logo" />
997fb726d48Sopenharmony_ci        <br />
998fb726d48Sopenharmony_ci        搜索场景:框选函数调用栈的泳道图,弹出Slices
999fb726d48Sopenharmony_ci        Tab页,点击表格行,会跳转到框选范围内的第一条调用栈的位置,点击下图Slices Tab页的Background concurrent copying
1000fb726d48Sopenharmony_ci        GC调用栈。
1001fb726d48Sopenharmony_ci        <br />
1002fb726d48Sopenharmony_ci        <img src="../figures/Web/Tabskillcalltack.jpg" alt="GitHub Logo" />
1003fb726d48Sopenharmony_ci        <br />
1004fb726d48Sopenharmony_ci        会在搜索栏显示出该调用栈的搜索结果,并且会跳转到框选范围内第一条Background concurrent copying GC调用栈的位置。
1005fb726d48Sopenharmony_ci        <br />
1006fb726d48Sopenharmony_ci        <img src="../figures/Web/Tabcallstackskip.jpg" alt="GitHub Logo" />
1007fb726d48Sopenharmony_ci      </p>
1008fb726d48Sopenharmony_ci      <h4 class="mume-header fontColor" id="header-index-10">M键测量功能</h4>
1009fb726d48Sopenharmony_ci
1010fb726d48Sopenharmony_ci      <p class="fontColor">
1011fb726d48Sopenharmony_ci        放大trace中的色块,选中色块,键盘按下M,会出现像标尺一样的形状。
1012fb726d48Sopenharmony_ci        <br />
1013fb726d48Sopenharmony_ci        <img src="../figures/Web/M.jpg" alt="GitHub Logo" />
1014fb726d48Sopenharmony_ci      </p>
1015fb726d48Sopenharmony_ci    </div>
1016fb726d48Sopenharmony_ci
1017fb726d48Sopenharmony_ci    <script>
1018fb726d48Sopenharmony_ci      window.onload = () => {
1019fb726d48Sopenharmony_ci        let isDark = getURLParameter('dark'); 
1020fb726d48Sopenharmony_ci        let targetId = getURLParameter('targetId'); 
1021fb726d48Sopenharmony_ci        let isBack = getURLParameter('isBack'); 
1022fb726d48Sopenharmony_ci        if (isDark === 'true') {
1023fb726d48Sopenharmony_ci          document.getElementById('body').setAttribute('style', 'background-color:#272C34;');
1024fb726d48Sopenharmony_ci          let header = document.getElementsByClassName('fontColor');
1025fb726d48Sopenharmony_ci          for (let i = 0; i < header.length; i++) {
1026fb726d48Sopenharmony_ci            header[i].style.color = '#fff';
1027fb726d48Sopenharmony_ci          }
1028fb726d48Sopenharmony_ci          let lightBackGround = document.getElementsByClassName('light');
1029fb726d48Sopenharmony_ci          for (let i = 0; i < lightBackGround.length; i++) {
1030fb726d48Sopenharmony_ci            lightBackGround[i].style.backgroundColor = '#32373F';
1031fb726d48Sopenharmony_ci          }
1032fb726d48Sopenharmony_ci        }
1033fb726d48Sopenharmony_ci        function getURLParameter(name) {  
1034fb726d48Sopenharmony_ci          return (new URL(document.location)).searchParams.get(name);  
1035fb726d48Sopenharmony_ci        }  
1036fb726d48Sopenharmony_ci  
1037fb726d48Sopenharmony_ci        if ( targetId !== null ) {
1038fb726d48Sopenharmony_ci          let targetElement = document.getElementById(targetId);
1039fb726d48Sopenharmony_ci          targetElement.scrollIntoView({ behavior: 'smooth' });
1040fb726d48Sopenharmony_ci        }
1041fb726d48Sopenharmony_ci      };
1042fb726d48Sopenharmony_ci    </script>
1043fb726d48Sopenharmony_ci  </body>
1044fb726d48Sopenharmony_ci</html>
1045