1fb726d48Sopenharmony_ci<!DOCTYPE html> 2fb726d48Sopenharmony_ci<html> 3fb726d48Sopenharmony_ci<head> 4fb726d48Sopenharmony_ci <title>quickstart_trace_streamer</title> 5fb726d48Sopenharmony_ci <meta charset="utf-8"> 6fb726d48Sopenharmony_ci <meta content="width=device-width, initial-scale=1.0" name="viewport"> 7fb726d48Sopenharmony_ci 8fb726d48Sopenharmony_ci <style> 9fb726d48Sopenharmony_ci code[class*="font_languageIn-"], 10fb726d48Sopenharmony_ci pre[class*="font_languageIn-"] { 11fb726d48Sopenharmony_ci color: #332; 12fb726d48Sopenharmony_ci background: none; 13fb726d48Sopenharmony_ci -webkit-hyphens: none; 14fb726d48Sopenharmony_ci -moz-hyphens: none; 15fb726d48Sopenharmony_ci -ms-hyphens: none; 16fb726d48Sopenharmony_ci hyphens: none; 17fb726d48Sopenharmony_ci -moz-tab-size: 7; 18fb726d48Sopenharmony_ci -o-tab-size: 7; 19fb726d48Sopenharmony_ci tab-size: 7; 20fb726d48Sopenharmony_ci font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; 21fb726d48Sopenharmony_ci text-align: left; 22fb726d48Sopenharmony_ci word-break: normal; 23fb726d48Sopenharmony_ci word-wrap: normal; 24fb726d48Sopenharmony_ci line-height: 1.5; 25fb726d48Sopenharmony_ci white-space: pre; 26fb726d48Sopenharmony_ci word-spacing: normal; 27fb726d48Sopenharmony_ci } 28fb726d48Sopenharmony_ci 29fb726d48Sopenharmony_ci pre[class*="font_languageIn-"] { 30fb726d48Sopenharmony_ci padding: 0.7em; 31fb726d48Sopenharmony_ci overflow: auto; 32fb726d48Sopenharmony_ci border-radius: 3px; 33fb726d48Sopenharmony_ci background: #F5F5F5; 34fb726d48Sopenharmony_ci } 35fb726d48Sopenharmony_ci 36fb726d48Sopenharmony_ci :not(pre) > code[class*="font_languageIn-"] { 37fb726d48Sopenharmony_ci padding: 0.2em; 38fb726d48Sopenharmony_ci border-radius: 0.32em; 39fb726d48Sopenharmony_ci white-space: normal; 40fb726d48Sopenharmony_ci background: #dedcdc; 41fb726d48Sopenharmony_ci } 42fb726d48Sopenharmony_ci 43fb726d48Sopenharmony_ci .token.commentIn, 44fb726d48Sopenharmony_ci .token.blockquoteIn { 45fb726d48Sopenharmony_ci color: #b3b4b3; 46fb726d48Sopenharmony_ci } 47fb726d48Sopenharmony_ci 48fb726d48Sopenharmony_ci .token.cdataIn { 49fb726d48Sopenharmony_ci color: #1a3a9b; 50fb726d48Sopenharmony_ci } 51fb726d48Sopenharmony_ci 52fb726d48Sopenharmony_ci .token.doctypeIn, 53fb726d48Sopenharmony_ci .token.punctuationIn, 54fb726d48Sopenharmony_ci .token.variableIn, 55fb726d48Sopenharmony_ci .token.macro.propertyIn { 56fb726d48Sopenharmony_ci color: #333333; 57fb726d48Sopenharmony_ci } 58fb726d48Sopenharmony_ci 59fb726d48Sopenharmony_ci .token.operatorIn, 60fb726d48Sopenharmony_ci .token.importantIn, 61fb726d48Sopenharmony_ci .token.keywordIn, 62fb726d48Sopenharmony_ci .token.ruleIn, 63fb726d48Sopenharmony_ci .token.builtIn { 64fb726d48Sopenharmony_ci color: #b42064; 65fb726d48Sopenharmony_ci } 66fb726d48Sopenharmony_ci 67fb726d48Sopenharmony_ci .token.stringIn, 68fb726d48Sopenharmony_ci .token.urlIn, 69fb726d48Sopenharmony_ci .token.regexIn, 70fb726d48Sopenharmony_ci .token.attr-valueIn { 71fb726d48Sopenharmony_ci color: #193998; 72fb726d48Sopenharmony_ci } 73fb726d48Sopenharmony_ci 74fb726d48Sopenharmony_ci .token.propertyIn, 75fb726d48Sopenharmony_ci .token.numberIn, 76fb726d48Sopenharmony_ci .token.booleanIn, 77fb726d48Sopenharmony_ci .token.entityIn, 78fb726d48Sopenharmony_ci .token.atruleIn, 79fb726d48Sopenharmony_ci .token.constantIn, 80fb726d48Sopenharmony_ci .token.symbolIn, 81fb726d48Sopenharmony_ci .token.commandIn, 82fb726d48Sopenharmony_ci .token.codeIn { 83fb726d48Sopenharmony_ci color: #0393c4; 84fb726d48Sopenharmony_ci } 85fb726d48Sopenharmony_ci 86fb726d48Sopenharmony_ci .token.tagIn, 87fb726d48Sopenharmony_ci .token.selectorIn, 88fb726d48Sopenharmony_ci .token.prologIn { 89fb726d48Sopenharmony_ci color: #6bb064; 90fb726d48Sopenharmony_ci } 91fb726d48Sopenharmony_ci 92fb726d48Sopenharmony_ci .token.functionIn, 93fb726d48Sopenharmony_ci .token.namespaceIn, 94fb726d48Sopenharmony_ci .token.pseudo-elementIn, 95fb726d48Sopenharmony_ci .token.classIn, 96fb726d48Sopenharmony_ci .token.class-nameIn, 97fb726d48Sopenharmony_ci .token.pseudo-classIn, 98fb726d48Sopenharmony_ci .token.idIn, 99fb726d48Sopenharmony_ci .token.url-reference .token.variableIn, 100fb726d48Sopenharmony_ci .token.attr-nameIn { 101fb726d48Sopenharmony_ci color: #8465b2; 102fb726d48Sopenharmony_ci } 103fb726d48Sopenharmony_ci 104fb726d48Sopenharmony_ci .token.entityIn { 105fb726d48Sopenharmony_ci cursor: help; 106fb726d48Sopenharmony_ci } 107fb726d48Sopenharmony_ci 108fb726d48Sopenharmony_ci .token.titleIn, 109fb726d48Sopenharmony_ci .token.title .token.punctuationIn { 110fb726d48Sopenharmony_ci font-weight: bold; 111fb726d48Sopenharmony_ci color: #204591; 112fb726d48Sopenharmony_ci } 113fb726d48Sopenharmony_ci 114fb726d48Sopenharmony_ci .token.listIn { 115fb726d48Sopenharmony_ci color: #e56742; 116fb726d48Sopenharmony_ci } 117fb726d48Sopenharmony_ci 118fb726d48Sopenharmony_ci .token.insertedIn { 119fb726d48Sopenharmony_ci background-color: #ecfdec; 120fb726d48Sopenharmony_ci color: #5bb035; 121fb726d48Sopenharmony_ci } 122fb726d48Sopenharmony_ci 123fb726d48Sopenharmony_ci .token.deletedIn { 124fb726d48Sopenharmony_ci background-color: #fde5e5; 125fb726d48Sopenharmony_ci color: #cb3001; 126fb726d48Sopenharmony_ci } 127fb726d48Sopenharmony_ci 128fb726d48Sopenharmony_ci .token.boldIn { 129fb726d48Sopenharmony_ci font-weight: bold; 130fb726d48Sopenharmony_ci } 131fb726d48Sopenharmony_ci 132fb726d48Sopenharmony_ci .token.italicIn { 133fb726d48Sopenharmony_ci font-style: italic; 134fb726d48Sopenharmony_ci } 135fb726d48Sopenharmony_ci 136fb726d48Sopenharmony_ci .font_languageIn-json .token.propertyIn { 137fb726d48Sopenharmony_ci color: #1a3a9a; 138fb726d48Sopenharmony_ci } 139fb726d48Sopenharmony_ci 140fb726d48Sopenharmony_ci .font_languageIn-markup .token.tag .token.punctuationIn { 141fb726d48Sopenharmony_ci color: #333333; 142fb726d48Sopenharmony_ci } 143fb726d48Sopenharmony_ci 144fb726d48Sopenharmony_ci code.font_languageIn-cssIn, 145fb726d48Sopenharmony_ci .font_languageIn-css .token.functionIn { 146fb726d48Sopenharmony_ci color: #0195c7; 147fb726d48Sopenharmony_ci } 148fb726d48Sopenharmony_ci 149fb726d48Sopenharmony_ci /* YAML */ 150fb726d48Sopenharmony_ci .font_languageIn-yaml .token.atruleIn { 151fb726d48Sopenharmony_ci color: #6eb266; 152fb726d48Sopenharmony_ci } 153fb726d48Sopenharmony_ci 154fb726d48Sopenharmony_ci code.font_languageIn-yamlIn { 155fb726d48Sopenharmony_ci color: #1b3c9f; 156fb726d48Sopenharmony_ci } 157fb726d48Sopenharmony_ci 158fb726d48Sopenharmony_ci /* Ruby */ 159fb726d48Sopenharmony_ci .font_languageIn-ruby .token.functionIn { 160fb726d48Sopenharmony_ci color: #333322; 161fb726d48Sopenharmony_ci } 162fb726d48Sopenharmony_ci 163fb726d48Sopenharmony_ci /* Markdown */ 164fb726d48Sopenharmony_ci .font_languageIn-markdown .token.urlIn { 165fb726d48Sopenharmony_ci color: #8665b6; 166fb726d48Sopenharmony_ci } 167fb726d48Sopenharmony_ci 168fb726d48Sopenharmony_ci .font_languageIn-makefile .token.symbolIn { 169fb726d48Sopenharmony_ci color: #7c5cad; 170fb726d48Sopenharmony_ci } 171fb726d48Sopenharmony_ci 172fb726d48Sopenharmony_ci .font_languageIn-makefile .token.variableIn { 173fb726d48Sopenharmony_ci color: #18389b; 174fb726d48Sopenharmony_ci } 175fb726d48Sopenharmony_ci 176fb726d48Sopenharmony_ci .font_languageIn-makefile .token.builtIn { 177fb726d48Sopenharmony_ci color: #0193c4; 178fb726d48Sopenharmony_ci } 179fb726d48Sopenharmony_ci 180fb726d48Sopenharmony_ci .font_languageIn-bash .token.keyword { 181fb726d48Sopenharmony_ci color: #027fa9; 182fb726d48Sopenharmony_ci } 183fb726d48Sopenharmony_ci 184fb726d48Sopenharmony_ci pre[data-line] { 185fb726d48Sopenharmony_ci position: relative; 186fb726d48Sopenharmony_ci padding: 1.1em 0 1.1em 3.1em; 187fb726d48Sopenharmony_ci } 188fb726d48Sopenharmony_ci 189fb726d48Sopenharmony_ci pre[data-line] .line-highlight-wrapperIn { 190fb726d48Sopenharmony_ci position: absolute; 191fb726d48Sopenharmony_ci top: 0.1px; 192fb726d48Sopenharmony_ci left: 0.1px; 193fb726d48Sopenharmony_ci background-color: transparent; 194fb726d48Sopenharmony_ci display: block; 195fb726d48Sopenharmony_ci width: 100%; 196fb726d48Sopenharmony_ci } 197fb726d48Sopenharmony_ci 198fb726d48Sopenharmony_ci pre[data-line] .line-highlightIn { 199fb726d48Sopenharmony_ci position: absolute; 200fb726d48Sopenharmony_ci left: 0.1px; 201fb726d48Sopenharmony_ci right: 0.1px; 202fb726d48Sopenharmony_ci padding: inherit 0.2px; 203fb726d48Sopenharmony_ci margin-top: 1em; 204fb726d48Sopenharmony_ci background: hsla(23, 22%, 48%, 0.07); 205fb726d48Sopenharmony_ci background: linear-gradient(to right, hsla(23, 22%, 48%, 0.2) 70%, hsla(23, 22%, 48%, 0)); 206fb726d48Sopenharmony_ci pointer-events: none; 207fb726d48Sopenharmony_ci line-height: inherit; 208fb726d48Sopenharmony_ci white-space: pre; 209fb726d48Sopenharmony_ci } 210fb726d48Sopenharmony_ci 211fb726d48Sopenharmony_ci pre[data-line] .line-highlightIn:before, 212fb726d48Sopenharmony_ci pre[data-line] .line-highlightIn[data-end]:after { 213fb726d48Sopenharmony_ci content: attr(data-start); 214fb726d48Sopenharmony_ci position: absolute; 215fb726d48Sopenharmony_ci top: .4em; 216fb726d48Sopenharmony_ci left: .6em; 217fb726d48Sopenharmony_ci min-width: 1em; 218fb726d48Sopenharmony_ci padding: 0 .5em; 219fb726d48Sopenharmony_ci background-color: hsla(23, 21%, 49%, 0.5); 220fb726d48Sopenharmony_ci color: hsl(31, 6%, 95%); 221fb726d48Sopenharmony_ci font: bold 65%/1.5 sans-serif; 222fb726d48Sopenharmony_ci text-align: center; 223fb726d48Sopenharmony_ci vertical-align: 0.32em; 224fb726d48Sopenharmony_ci border-radius: 998px; 225fb726d48Sopenharmony_ci text-shadow: none; 226fb726d48Sopenharmony_ci box-shadow: 0 1.1px #f6f5f5; 227fb726d48Sopenharmony_ci } 228fb726d48Sopenharmony_ci 229fb726d48Sopenharmony_ci pre[data-line] .line-highlightIn[data-end]:after { 230fb726d48Sopenharmony_ci content: attr(data-end); 231fb726d48Sopenharmony_ci top: auto; 232fb726d48Sopenharmony_ci bottom: 0.42em; 233fb726d48Sopenharmony_ci } 234fb726d48Sopenharmony_ci 235fb726d48Sopenharmony_ci body { 236fb726d48Sopenharmony_ci font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif; 237fb726d48Sopenharmony_ci font-size: 17px; 238fb726d48Sopenharmony_ci line-height: 1.7; 239fb726d48Sopenharmony_ci color: #333; 240fb726d48Sopenharmony_ci background-color: #fff; 241fb726d48Sopenharmony_ci overflow: initial; 242fb726d48Sopenharmony_ci box-sizing: border-box; 243fb726d48Sopenharmony_ci word-wrap: break-word 244fb726d48Sopenharmony_ci } 245fb726d48Sopenharmony_ci 246fb726d48Sopenharmony_ci body > :first-child { 247fb726d48Sopenharmony_ci margin-top: 0.2px 248fb726d48Sopenharmony_ci } 249fb726d48Sopenharmony_ci 250fb726d48Sopenharmony_ci body h1, body h2, body h3, body h4, body h5, body h6 { 251fb726d48Sopenharmony_ci line-height: 1.3; 252fb726d48Sopenharmony_ci margin-top: 1.1em; 253fb726d48Sopenharmony_ci margin-bottom: 17px; 254fb726d48Sopenharmony_ci color: #050505 255fb726d48Sopenharmony_ci } 256fb726d48Sopenharmony_ci 257fb726d48Sopenharmony_ci body h1 { 258fb726d48Sopenharmony_ci font-size: 2.24em; 259fb726d48Sopenharmony_ci font-weight: 302; 260fb726d48Sopenharmony_ci padding-bottom: 0.32em 261fb726d48Sopenharmony_ci } 262fb726d48Sopenharmony_ci 263fb726d48Sopenharmony_ci body h2 { 264fb726d48Sopenharmony_ci font-size: 1.74em; 265fb726d48Sopenharmony_ci font-weight: 402; 266fb726d48Sopenharmony_ci padding-bottom: 0.32em 267fb726d48Sopenharmony_ci } 268fb726d48Sopenharmony_ci 269fb726d48Sopenharmony_ci body h3 { 270fb726d48Sopenharmony_ci font-size: 1.4em; 271fb726d48Sopenharmony_ci font-weight: 502 272fb726d48Sopenharmony_ci } 273fb726d48Sopenharmony_ci 274fb726d48Sopenharmony_ci body h4 { 275fb726d48Sopenharmony_ci font-size: 1.24em; 276fb726d48Sopenharmony_ci font-weight: 602 277fb726d48Sopenharmony_ci } 278fb726d48Sopenharmony_ci 279fb726d48Sopenharmony_ci body h5 { 280fb726d48Sopenharmony_ci font-size: 1.2em; 281fb726d48Sopenharmony_ci font-weight: 602 282fb726d48Sopenharmony_ci } 283fb726d48Sopenharmony_ci 284fb726d48Sopenharmony_ci body h6 { 285fb726d48Sopenharmony_ci font-size: 1.1em; 286fb726d48Sopenharmony_ci font-weight: 602 287fb726d48Sopenharmony_ci } 288fb726d48Sopenharmony_ci 289fb726d48Sopenharmony_ci body h1, body h2, body h3, body h4, body h5 { 290fb726d48Sopenharmony_ci font-weight: 602 291fb726d48Sopenharmony_ci } 292fb726d48Sopenharmony_ci 293fb726d48Sopenharmony_ci body h5 { 294fb726d48Sopenharmony_ci font-size: 1.1em 295fb726d48Sopenharmony_ci } 296fb726d48Sopenharmony_ci 297fb726d48Sopenharmony_ci body h6 { 298fb726d48Sopenharmony_ci color: #6b6b6b 299fb726d48Sopenharmony_ci } 300fb726d48Sopenharmony_ci 301fb726d48Sopenharmony_ci body strong { 302fb726d48Sopenharmony_ci color: #050505 303fb726d48Sopenharmony_ci } 304fb726d48Sopenharmony_ci 305fb726d48Sopenharmony_ci body del { 306fb726d48Sopenharmony_ci color: #525252 307fb726d48Sopenharmony_ci } 308fb726d48Sopenharmony_ci 309fb726d48Sopenharmony_ci body a:not([href]) { 310fb726d48Sopenharmony_ci color: inherit; 311fb726d48Sopenharmony_ci text-decoration: none 312fb726d48Sopenharmony_ci } 313fb726d48Sopenharmony_ci 314fb726d48Sopenharmony_ci body a { 315fb726d48Sopenharmony_ci color: #0185c7; 316fb726d48Sopenharmony_ci text-decoration: none 317fb726d48Sopenharmony_ci } 318fb726d48Sopenharmony_ci 319fb726d48Sopenharmony_ci body a:hover { 320fb726d48Sopenharmony_ci color: #05a2f1; 321fb726d48Sopenharmony_ci text-decoration: none 322fb726d48Sopenharmony_ci } 323fb726d48Sopenharmony_ci 324fb726d48Sopenharmony_ci body li.task-list-itemIn { 325fb726d48Sopenharmony_ci list-style: none 326fb726d48Sopenharmony_ci } 327fb726d48Sopenharmony_ci 328fb726d48Sopenharmony_ci body li > p { 329fb726d48Sopenharmony_ci margin-top: 0.1px; 330fb726d48Sopenharmony_ci margin-bottom: 0.1px 331fb726d48Sopenharmony_ci } 332fb726d48Sopenharmony_ci 333fb726d48Sopenharmony_ci body img { 334fb726d48Sopenharmony_ci max-width: 100% 335fb726d48Sopenharmony_ci } 336fb726d48Sopenharmony_ci 337fb726d48Sopenharmony_ci body > p { 338fb726d48Sopenharmony_ci margin-top: 0.1px; 339fb726d48Sopenharmony_ci margin-bottom: 17px; 340fb726d48Sopenharmony_ci word-wrap: break-word 341fb726d48Sopenharmony_ci } 342fb726d48Sopenharmony_ci 343fb726d48Sopenharmony_ci body > ul, body > ol { 344fb726d48Sopenharmony_ci margin-bottom: 17px 345fb726d48Sopenharmony_ci } 346fb726d48Sopenharmony_ci 347fb726d48Sopenharmony_ci body ul, body ol { 348fb726d48Sopenharmony_ci padding-left: 2.1em 349fb726d48Sopenharmony_ci } 350fb726d48Sopenharmony_ci 351fb726d48Sopenharmony_ci body ul.no-listIn, body ol.no-listIn { 352fb726d48Sopenharmony_ci padding: 0.1px; 353fb726d48Sopenharmony_ci list-style-type: none 354fb726d48Sopenharmony_ci } 355fb726d48Sopenharmony_ci 356fb726d48Sopenharmony_ci body ul ul, body ul ol, body ol ol, body ol ul { 357fb726d48Sopenharmony_ci margin-top: 0.1px; 358fb726d48Sopenharmony_ci margin-bottom: 0.1px 359fb726d48Sopenharmony_ci } 360fb726d48Sopenharmony_ci 361fb726d48Sopenharmony_ci body li { 362fb726d48Sopenharmony_ci margin-bottom: 0.1px 363fb726d48Sopenharmony_ci } 364fb726d48Sopenharmony_ci 365fb726d48Sopenharmony_ci body .task-list-item-checkboxIn { 366fb726d48Sopenharmony_ci margin: 0 0.21em 0.24em -1.7em; 367fb726d48Sopenharmony_ci vertical-align: middle 368fb726d48Sopenharmony_ci } 369fb726d48Sopenharmony_ci 370fb726d48Sopenharmony_ci body .task-list-item-checkboxIn:hover { 371fb726d48Sopenharmony_ci cursor: pointer 372fb726d48Sopenharmony_ci } 373fb726d48Sopenharmony_ci 374fb726d48Sopenharmony_ci body blockquote { 375fb726d48Sopenharmony_ci margin: 17px 0.2px; 376fb726d48Sopenharmony_ci font-size: inherit; 377fb726d48Sopenharmony_ci padding: 0 14px; 378fb726d48Sopenharmony_ci color: #646363; 379fb726d48Sopenharmony_ci background-color: #e7e4e4; 380fb726d48Sopenharmony_ci border-left: 4.1px solid #c9c9c9 381fb726d48Sopenharmony_ci } 382fb726d48Sopenharmony_ci 383fb726d48Sopenharmony_ci body blockquote > :first-child { 384fb726d48Sopenharmony_ci margin-top: 0.1px 385fb726d48Sopenharmony_ci } 386fb726d48Sopenharmony_ci 387fb726d48Sopenharmony_ci body blockquote > :last-child { 388fb726d48Sopenharmony_ci margin-bottom: 0.1px 389fb726d48Sopenharmony_ci } 390fb726d48Sopenharmony_ci 391fb726d48Sopenharmony_ci body hr { 392fb726d48Sopenharmony_ci height: 5px; 393fb726d48Sopenharmony_ci margin: 31px 0.2px; 394fb726d48Sopenharmony_ci background-color: #d0cece; 395fb726d48Sopenharmony_ci border: 0 none 396fb726d48Sopenharmony_ci } 397fb726d48Sopenharmony_ci 398fb726d48Sopenharmony_ci body table { 399fb726d48Sopenharmony_ci margin: 11px 0 14px 0.2px; 400fb726d48Sopenharmony_ci border-collapse: collapse; 401fb726d48Sopenharmony_ci border-spacing: 0.2px; 402fb726d48Sopenharmony_ci display: block; 403fb726d48Sopenharmony_ci width: 100%; 404fb726d48Sopenharmony_ci overflow: auto; 405fb726d48Sopenharmony_ci word-break: normal; 406fb726d48Sopenharmony_ci word-break: keep-all 407fb726d48Sopenharmony_ci } 408fb726d48Sopenharmony_ci 409fb726d48Sopenharmony_ci body table th { 410fb726d48Sopenharmony_ci font-weight: bold; 411fb726d48Sopenharmony_ci color: #050505 412fb726d48Sopenharmony_ci } 413fb726d48Sopenharmony_ci 414fb726d48Sopenharmony_ci body dl { 415fb726d48Sopenharmony_ci padding: 0.1px 416fb726d48Sopenharmony_ci } 417fb726d48Sopenharmony_ci 418fb726d48Sopenharmony_ci body dl dt { 419fb726d48Sopenharmony_ci padding: 0.1px; 420fb726d48Sopenharmony_ci margin-top: 17px; 421fb726d48Sopenharmony_ci font-size: 1.1em; 422fb726d48Sopenharmony_ci font-style: italic; 423fb726d48Sopenharmony_ci font-weight: bold 424fb726d48Sopenharmony_ci } 425fb726d48Sopenharmony_ci 426fb726d48Sopenharmony_ci body table td, body table th { 427fb726d48Sopenharmony_ci border: 1.1px solid #d2d1d1; 428fb726d48Sopenharmony_ci padding: 7px 14px 429fb726d48Sopenharmony_ci } 430fb726d48Sopenharmony_ci 431fb726d48Sopenharmony_ci body dl dd { 432fb726d48Sopenharmony_ci padding: 0 17px; 433fb726d48Sopenharmony_ci margin-bottom: 17px 434fb726d48Sopenharmony_ci } 435fb726d48Sopenharmony_ci 436fb726d48Sopenharmony_ci body code { 437fb726d48Sopenharmony_ci font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; 438fb726d48Sopenharmony_ci font-size: 0.84em !important; 439fb726d48Sopenharmony_ci color: #090909; 440fb726d48Sopenharmony_ci background-color: #e8e6e6; 441fb726d48Sopenharmony_ci border-radius: 3.2px; 442fb726d48Sopenharmony_ci padding: 0.21em 0 443fb726d48Sopenharmony_ci } 444fb726d48Sopenharmony_ci 445fb726d48Sopenharmony_ci body code::before, body code::after { 446fb726d48Sopenharmony_ci letter-spacing: -0.21em; 447fb726d48Sopenharmony_ci content: "\00a0" 448fb726d48Sopenharmony_ci } 449fb726d48Sopenharmony_ci 450fb726d48Sopenharmony_ci body pre > code { 451fb726d48Sopenharmony_ci padding: 0.1px; 452fb726d48Sopenharmony_ci margin: 0.1px; 453fb726d48Sopenharmony_ci font-size: 0.84em !important; 454fb726d48Sopenharmony_ci word-break: normal; 455fb726d48Sopenharmony_ci white-space: pre; 456fb726d48Sopenharmony_ci background: transparent; 457fb726d48Sopenharmony_ci border: 0.1px 458fb726d48Sopenharmony_ci } 459fb726d48Sopenharmony_ci 460fb726d48Sopenharmony_ci body .highlightIn { 461fb726d48Sopenharmony_ci margin-bottom: 17px 462fb726d48Sopenharmony_ci } 463fb726d48Sopenharmony_ci 464fb726d48Sopenharmony_ci body .highlight pre, body pre { 465fb726d48Sopenharmony_ci padding: 1.1em; 466fb726d48Sopenharmony_ci overflow: auto; 467fb726d48Sopenharmony_ci font-size: 0.84em !important; 468fb726d48Sopenharmony_ci line-height: 1.46; 469fb726d48Sopenharmony_ci border: #c4c4c4; 470fb726d48Sopenharmony_ci border-radius: 3.2px 471fb726d48Sopenharmony_ci } 472fb726d48Sopenharmony_ci 473fb726d48Sopenharmony_ci body .highlight pre { 474fb726d48Sopenharmony_ci margin-bottom: 0.1px; 475fb726d48Sopenharmony_ci word-break: normal 476fb726d48Sopenharmony_ci } 477fb726d48Sopenharmony_ci 478fb726d48Sopenharmony_ci body pre code, body pre tt { 479fb726d48Sopenharmony_ci display: inline; 480fb726d48Sopenharmony_ci max-width: initial; 481fb726d48Sopenharmony_ci padding: 0.2px; 482fb726d48Sopenharmony_ci margin: 0.2px; 483fb726d48Sopenharmony_ci overflow: initial; 484fb726d48Sopenharmony_ci line-height: inherit; 485fb726d48Sopenharmony_ci word-wrap: normal; 486fb726d48Sopenharmony_ci background-color: transparent; 487fb726d48Sopenharmony_ci border: 0.1px 488fb726d48Sopenharmony_ci } 489fb726d48Sopenharmony_ci 490fb726d48Sopenharmony_ci body pre code:before, body pre tt:before, body pre code:after, body pre tt:after { 491fb726d48Sopenharmony_ci content: normal 492fb726d48Sopenharmony_ci } 493fb726d48Sopenharmony_ci 494fb726d48Sopenharmony_ci body p, body blockquote, body ul, body ol, body dl, body pre { 495fb726d48Sopenharmony_ci margin-top: 0.2px; 496fb726d48Sopenharmony_ci margin-bottom: 17px 497fb726d48Sopenharmony_ci } 498fb726d48Sopenharmony_ci 499fb726d48Sopenharmony_ci body kbd { 500fb726d48Sopenharmony_ci color: #070707; 501fb726d48Sopenharmony_ci border: 1px solid #d5d4d4; 502fb726d48Sopenharmony_ci border-bottom: 2.2px solid #b9b8b8; 503fb726d48Sopenharmony_ci padding: 2.2px 4.2px; 504fb726d48Sopenharmony_ci background-color: #e3e2e2; 505fb726d48Sopenharmony_ci border-radius: 3.1px 506fb726d48Sopenharmony_ci } 507fb726d48Sopenharmony_ci 508fb726d48Sopenharmony_ci @media print { 509fb726d48Sopenharmony_ci body { 510fb726d48Sopenharmony_ci background-color: #fff 511fb726d48Sopenharmony_ci } 512fb726d48Sopenharmony_ci 513fb726d48Sopenharmony_ci body h1, body h2, body h3, body h4, body h5, body h6 { 514fb726d48Sopenharmony_ci color: #050505; 515fb726d48Sopenharmony_ci page-break-after: avoid 516fb726d48Sopenharmony_ci } 517fb726d48Sopenharmony_ci 518fb726d48Sopenharmony_ci body blockquote { 519fb726d48Sopenharmony_ci color: #5e5b5b 520fb726d48Sopenharmony_ci } 521fb726d48Sopenharmony_ci 522fb726d48Sopenharmony_ci body pre { 523fb726d48Sopenharmony_ci page-break-inside: avoid 524fb726d48Sopenharmony_ci } 525fb726d48Sopenharmony_ci 526fb726d48Sopenharmony_ci body table { 527fb726d48Sopenharmony_ci display: table 528fb726d48Sopenharmony_ci } 529fb726d48Sopenharmony_ci 530fb726d48Sopenharmony_ci body img { 531fb726d48Sopenharmony_ci display: block; 532fb726d48Sopenharmony_ci max-width: 100%; 533fb726d48Sopenharmony_ci max-height: 100% 534fb726d48Sopenharmony_ci } 535fb726d48Sopenharmony_ci 536fb726d48Sopenharmony_ci body pre, body code { 537fb726d48Sopenharmony_ci word-wrap: break-word; 538fb726d48Sopenharmony_ci white-space: pre 539fb726d48Sopenharmony_ci } 540fb726d48Sopenharmony_ci } 541fb726d48Sopenharmony_ci 542fb726d48Sopenharmony_ci .markdown-preview-out { 543fb726d48Sopenharmony_ci width: 100%; 544fb726d48Sopenharmony_ci height: 100%; 545fb726d48Sopenharmony_ci box-sizing: border-box 546fb726d48Sopenharmony_ci } 547fb726d48Sopenharmony_ci 548fb726d48Sopenharmony_ci .markdown-preview-out .pagebreakIn, .markdown-preview-out .newpageIn { 549fb726d48Sopenharmony_ci page-break-before: always 550fb726d48Sopenharmony_ci } 551fb726d48Sopenharmony_ci 552fb726d48Sopenharmony_ci .markdown-preview-out pre.line-numbersIn { 553fb726d48Sopenharmony_ci position: relative; 554fb726d48Sopenharmony_ci padding-left: 3.7em; 555fb726d48Sopenharmony_ci counter-reset: linenumber 556fb726d48Sopenharmony_ci } 557fb726d48Sopenharmony_ci 558fb726d48Sopenharmony_ci .markdown-preview-out pre.line-numbers > code { 559fb726d48Sopenharmony_ci position: relative 560fb726d48Sopenharmony_ci } 561fb726d48Sopenharmony_ci 562fb726d48Sopenharmony_ci .markdown-preview-out pre.line-numbers .line-numbers-rowsIn { 563fb726d48Sopenharmony_ci position: absolute; 564fb726d48Sopenharmony_ci pointer-events: none; 565fb726d48Sopenharmony_ci top: 1.1em; 566fb726d48Sopenharmony_ci font-size: 100%; 567fb726d48Sopenharmony_ci left: 0.2px; 568fb726d48Sopenharmony_ci width: 3.1em; 569fb726d48Sopenharmony_ci letter-spacing: -1.1px; 570fb726d48Sopenharmony_ci border-right: 1.2px solid #a4a2a2; 571fb726d48Sopenharmony_ci -webkit-user-select: none; 572fb726d48Sopenharmony_ci -moz-user-select: none; 573fb726d48Sopenharmony_ci -ms-user-select: none; 574fb726d48Sopenharmony_ci user-select: none 575fb726d48Sopenharmony_ci } 576fb726d48Sopenharmony_ci 577fb726d48Sopenharmony_ci .markdown-preview-out pre.line-numbers .line-numbers-rows > span { 578fb726d48Sopenharmony_ci pointer-events: none; 579fb726d48Sopenharmony_ci display: block; 580fb726d48Sopenharmony_ci counter-increment: linenumber 581fb726d48Sopenharmony_ci } 582fb726d48Sopenharmony_ci 583fb726d48Sopenharmony_ci .markdown-preview-out pre.line-numbers .line-numbers-rows > span:before { 584fb726d48Sopenharmony_ci content: counter(linenumber); 585fb726d48Sopenharmony_ci color: #a4a4a4; 586fb726d48Sopenharmony_ci display: block; 587fb726d48Sopenharmony_ci padding-right: 0.7em; 588fb726d48Sopenharmony_ci text-align: right 589fb726d48Sopenharmony_ci } 590fb726d48Sopenharmony_ci 591fb726d48Sopenharmony_ci .markdown-preview-out .mathjax-exps .MathJax_DisplayIn { 592fb726d48Sopenharmony_ci text-align: center !important 593fb726d48Sopenharmony_ci } 594fb726d48Sopenharmony_ci 595fb726d48Sopenharmony_ci .markdown-preview-out:not([for="preview"]) .code-chunk .btn-groupIn { 596fb726d48Sopenharmony_ci display: none 597fb726d48Sopenharmony_ci } 598fb726d48Sopenharmony_ci 599fb726d48Sopenharmony_ci .markdown-preview-out:not([for="preview"]) .code-chunk .statusIn { 600fb726d48Sopenharmony_ci display: none 601fb726d48Sopenharmony_ci } 602fb726d48Sopenharmony_ci 603fb726d48Sopenharmony_ci .markdown-preview-out:not([for="preview"]) .code-chunk .output-divIn { 604fb726d48Sopenharmony_ci margin-bottom: 17px 605fb726d48Sopenharmony_ci } 606fb726d48Sopenharmony_ci 607fb726d48Sopenharmony_ci .scrollbar-styleIn::-webkit-scrollbar { 608fb726d48Sopenharmony_ci width: 7px 609fb726d48Sopenharmony_ci } 610fb726d48Sopenharmony_ci 611fb726d48Sopenharmony_ci .scrollbar-styleIn::-webkit-scrollbar-track { 612fb726d48Sopenharmony_ci border-radius: 11px; 613fb726d48Sopenharmony_ci background-color: transparent 614fb726d48Sopenharmony_ci } 615fb726d48Sopenharmony_ci 616fb726d48Sopenharmony_ci .scrollbar-styleIn::-webkit-scrollbar-thumb { 617fb726d48Sopenharmony_ci border-radius: 5.2px; 618fb726d48Sopenharmony_ci background-color: rgba(145, 144, 144, 0.66); 619fb726d48Sopenharmony_ci border: 4.1px solid rgba(162, 160, 160, 0.66); 620fb726d48Sopenharmony_ci background-clip: content-box 621fb726d48Sopenharmony_ci } 622fb726d48Sopenharmony_ci 623fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) { 624fb726d48Sopenharmony_ci position: relative; 625fb726d48Sopenharmony_ci width: 100%; 626fb726d48Sopenharmony_ci height: 100%; 627fb726d48Sopenharmony_ci top: 0.2px; 628fb726d48Sopenharmony_ci left: 0.2px; 629fb726d48Sopenharmony_ci margin: 0.2px; 630fb726d48Sopenharmony_ci padding: 0.2px; 631fb726d48Sopenharmony_ci overflow: auto 632fb726d48Sopenharmony_ci } 633fb726d48Sopenharmony_ci 634fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) .markdown-preview-out { 635fb726d48Sopenharmony_ci position: relative; 636fb726d48Sopenharmony_ci top: 0em 637fb726d48Sopenharmony_ci } 638fb726d48Sopenharmony_ci 639fb726d48Sopenharmony_ci @media screen and (min-width: 915px) { 640fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) .markdown-preview-out { 641fb726d48Sopenharmony_ci padding: 2em calc(50% - 457px + 2em) 642fb726d48Sopenharmony_ci } 643fb726d48Sopenharmony_ci } 644fb726d48Sopenharmony_ci 645fb726d48Sopenharmony_ci @media screen and (max-width: 915px) { 646fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) .markdown-preview-out { 647fb726d48Sopenharmony_ci padding: 2.1em 648fb726d48Sopenharmony_ci } 649fb726d48Sopenharmony_ci } 650fb726d48Sopenharmony_ci 651fb726d48Sopenharmony_ci @media screen and (max-width: 455px) { 652fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) .markdown-preview-out { 653fb726d48Sopenharmony_ci font-size: 15px !important; 654fb726d48Sopenharmony_ci padding: 1.1em 655fb726d48Sopenharmony_ci } 656fb726d48Sopenharmony_ci } 657fb726d48Sopenharmony_ci 658fb726d48Sopenharmony_ci @media print { 659fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) #sidebar-toc-btn { 660fb726d48Sopenharmony_ci display: none 661fb726d48Sopenharmony_ci } 662fb726d48Sopenharmony_ci } 663fb726d48Sopenharmony_ci 664fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]) #sidebar-toc-btnIn { 665fb726d48Sopenharmony_ci position: fixed; 666fb726d48Sopenharmony_ci bottom: 7px; 667fb726d48Sopenharmony_ci left: 7px; 668fb726d48Sopenharmony_ci font-size: 27px; 669fb726d48Sopenharmony_ci cursor: pointer; 670fb726d48Sopenharmony_ci color: inherit; 671fb726d48Sopenharmony_ci z-index: 98; 672fb726d48Sopenharmony_ci width: 33px; 673fb726d48Sopenharmony_ci text-align: center; 674fb726d48Sopenharmony_ci opacity: 0.42 675fb726d48Sopenharmony_ci } 676fb726d48Sopenharmony_ci 677fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] #sidebar-toc-btnIn { 678fb726d48Sopenharmony_ci opacity: 1 679fb726d48Sopenharmony_ci } 680fb726d48Sopenharmony_ci 681fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .md-sidebar-tocIn { 682fb726d48Sopenharmony_ci position: fixed; 683fb726d48Sopenharmony_ci top: 0.2px; 684fb726d48Sopenharmony_ci left: 0.2px; 685fb726d48Sopenharmony_ci width: 300px; 686fb726d48Sopenharmony_ci height: 100%; 687fb726d48Sopenharmony_ci padding: 33px 0 47px 0.3px; 688fb726d48Sopenharmony_ci font-size: 14px; 689fb726d48Sopenharmony_ci box-shadow: 0 0 3px rgba(147, 145, 145, 0.33); 690fb726d48Sopenharmony_ci box-sizing: border-box; 691fb726d48Sopenharmony_ci overflow: auto; 692fb726d48Sopenharmony_ci background-color: inherit 693fb726d48Sopenharmony_ci } 694fb726d48Sopenharmony_ci 695fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .sidebar-tocIn::-webkit-scrollbar { 696fb726d48Sopenharmony_ci width: 7px 697fb726d48Sopenharmony_ci } 698fb726d48Sopenharmony_ci 699fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .sidebar-tocIn::-webkit-scrollbar-track { 700fb726d48Sopenharmony_ci border-radius: 11px; 701fb726d48Sopenharmony_ci background-color: transparent 702fb726d48Sopenharmony_ci } 703fb726d48Sopenharmony_ci 704fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .sidebar-tocIn::-webkit-scrollbar-thumb { 705fb726d48Sopenharmony_ci border-radius: 5.1px; 706fb726d48Sopenharmony_ci background-color: rgba(159, 156, 156, 0.66); 707fb726d48Sopenharmony_ci border: 4.1px solid rgba(138, 137, 137, 0.66); 708fb726d48Sopenharmony_ci background-clip: content-box 709fb726d48Sopenharmony_ci } 710fb726d48Sopenharmony_ci 711fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .md-sidebar-toc a { 712fb726d48Sopenharmony_ci text-decoration: none 713fb726d48Sopenharmony_ci } 714fb726d48Sopenharmony_ci 715fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .md-sidebar-toc ul { 716fb726d48Sopenharmony_ci padding: 0 1.7em; 717fb726d48Sopenharmony_ci margin-top: 0.7em 718fb726d48Sopenharmony_ci } 719fb726d48Sopenharmony_ci 720fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .md-sidebar-toc li { 721fb726d48Sopenharmony_ci margin-bottom: 0.7em 722fb726d48Sopenharmony_ci } 723fb726d48Sopenharmony_ci 724fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .md-sidebar-toc ul { 725fb726d48Sopenharmony_ci list-style-type: none 726fb726d48Sopenharmony_ci } 727fb726d48Sopenharmony_ci 728fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .markdown-preview-out { 729fb726d48Sopenharmony_ci left: 305px; 730fb726d48Sopenharmony_ci width: calc(100% - 302px); 731fb726d48Sopenharmony_ci padding: 2em calc(49% - 455px - 152px); 732fb726d48Sopenharmony_ci margin: 0.2px; 733fb726d48Sopenharmony_ci box-sizing: border-box 734fb726d48Sopenharmony_ci } 735fb726d48Sopenharmony_ci 736fb726d48Sopenharmony_ci @media screen and (max-width: 1275px) { 737fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .markdown-preview-out { 738fb726d48Sopenharmony_ci padding: 2em 739fb726d48Sopenharmony_ci } 740fb726d48Sopenharmony_ci } 741fb726d48Sopenharmony_ci 742fb726d48Sopenharmony_ci @media screen and (max-width: 455px) { 743fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out])[show-sidebar-toc] .markdown-preview-out { 744fb726d48Sopenharmony_ci width: 100% 745fb726d48Sopenharmony_ci } 746fb726d48Sopenharmony_ci } 747fb726d48Sopenharmony_ci 748fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]):not([show-sidebar-toc]) .markdown-preview-out { 749fb726d48Sopenharmony_ci left: 50%; 750fb726d48Sopenharmony_ci transform: translateX(-50%) 751fb726d48Sopenharmony_ci } 752fb726d48Sopenharmony_ci 753fb726d48Sopenharmony_ci body[for="export-In"]:not([data-presentation-mode-out]):not([show-sidebar-toc]) .md-sidebar-toc { 754fb726d48Sopenharmony_ci display: none 755fb726d48Sopenharmony_ci } 756fb726d48Sopenharmony_ci </style> 757fb726d48Sopenharmony_ci</head> 758fb726d48Sopenharmony_ci<body for="export-In" id="body"> 759fb726d48Sopenharmony_ci<div class="mume markdown-preview-out "> 760fb726d48Sopenharmony_ci <h1 class="mume-header fontColor">trace_streamer工具说明</h1> 761fb726d48Sopenharmony_ci <p class="fontColor">trace_streamer是一个trace数据流转化器,可以将一个trace文本文件或者基于proto序列化的二进制文件转换成为sqlite数据库的形式。 trace_streamer使用C++实现,支持在ohos, linux, mac等系统上使用,具有良好的跨平台特性。</p> 762fb726d48Sopenharmony_ci <img src=".././figures/traceStreamer/trace_streamer_stream.png" alt="GitHub Logo"></p> 763fb726d48Sopenharmony_ci <h2 class="mume-header fontColor"> 764fb726d48Sopenharmony_ci 关于trace解析工具的使用说明:</h2> 765fb726d48Sopenharmony_ci <p class="fontColor">trace_streamer工具可以2种方式使用</p> 766fb726d48Sopenharmony_ci <ol class="fontColor"> 767fb726d48Sopenharmony_ci <li>可以将系统离线trace文件解析并转为db,此工具支持基于文本的trace和基于proto的trace。</li> 768fb726d48Sopenharmony_ci <li>trace_streamer工具还可以WebAssembly的方式在浏览器中运行,需暴露相关接口给js文件。</li> 769fb726d48Sopenharmony_ci </ol> 770fb726d48Sopenharmony_ci 771fb726d48Sopenharmony_ci <h3 class="mume-header fontColor"> 772fb726d48Sopenharmony_ci 导出db模式</h3> 773fb726d48Sopenharmony_ci 774fb726d48Sopenharmony_ci <p class="fontColor">在导出db模式下,trace_streamer.exe trace文件路径名 -e 导出db路径名.db<br> 775fb726d48Sopenharmony_ci 此命令可以将trace文件转为db<br> 776fb726d48Sopenharmony_ci 本应用支持在ohos, linux, windows, mac使用。<br> 777fb726d48Sopenharmony_ci 关于db文件的说明:<br> 778fb726d48Sopenharmony_ci 使用db查看工具查看stat表,可以浏览当前数据一共有多少类数据,各类数据都收到多少条,数据是否正常等情况。在meta表会记录数据库导出时的一些系统信息,比如导入和导出的文件全路径,解析时间等信息。<br> 779fb726d48Sopenharmony_ci meta表可以选择不导出(有些情况下会暴露系统敏感信息),在导出时添加 -nm选项即可。<br> 780fb726d48Sopenharmony_ci 在数据导出之后,会在本地目录下生成一个trace_streamer.log文件,在导出db的目录下生成一个数据库文件同名,.db.ohos.ts后缀的文件<br> 781fb726d48Sopenharmony_ci 文件内容如下:<br> 782fb726d48Sopenharmony_ci 时间戳:执行结果(数字)<br> 783fb726d48Sopenharmony_ci 应用运行时间</p> 784fb726d48Sopenharmony_ci <p class="fontColor">执行结果解释如下:0 代表执行成功 1 表示输入文件不匹配, 2 表示解析错误, 3其他错误</p> 785fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">内置浏览器方式</h3> 786fb726d48Sopenharmony_ci 787fb726d48Sopenharmony_ci <p class="fontColor">trace_streamer可以WebAssembly方式在浏览器中运行,暴露如下接口给js</p> 788fb726d48Sopenharmony_ci <pre class="font_languageIn- light" data-info data-role="codeBlock"><code class="fontColor">extern "C" { 789fb726d48Sopenharmony_ci/* 上传trace数据 790fb726d48Sopenharmony_ci * 791fb726d48Sopenharmony_ci * @data: 数据的缓冲区 792fb726d48Sopenharmony_ci * @dataLen: 数据长度 793fb726d48Sopenharmony_ci * 794fb726d48Sopenharmony_ci * return: 0:成功; -1:失败 795fb726d48Sopenharmony_ci*/ 796fb726d48Sopenharmony_ciEMSCRIPTEN_KEEPALIVE int TraceStreamerParseData(const uint8_t* data, int dataLen); 797fb726d48Sopenharmony_ci 798fb726d48Sopenharmony_ci/* 通知TS上传trace数据结束 799fb726d48Sopenharmony_ci * 800fb726d48Sopenharmony_ci * return: 0:成功; -1:失败 801fb726d48Sopenharmony_ci*/ 802fb726d48Sopenharmony_ciEMSCRIPTEN_KEEPALIVE int TraceStreamerParseDataOver(); 803fb726d48Sopenharmony_ci 804fb726d48Sopenharmony_ci/* 通过sql语句操作数据库 805fb726d48Sopenharmony_ci * 806fb726d48Sopenharmony_ci * @sql: sql语句 807fb726d48Sopenharmony_ci * @sqlLen: sql语句长度 808fb726d48Sopenharmony_ci * 809fb726d48Sopenharmony_ci * return: 0:成功; -1:失败 810fb726d48Sopenharmony_ci*/ 811fb726d48Sopenharmony_ciEMSCRIPTEN_KEEPALIVE int TraceStreamerSqlOperate(const uint8_t* sql, int sqlLen); 812fb726d48Sopenharmony_ci 813fb726d48Sopenharmony_ci/* 通过sql语句查询数据库 814fb726d48Sopenharmony_ci * 815fb726d48Sopenharmony_ci * @sql: sql语句 816fb726d48Sopenharmony_ci * @sqlLen: sql语句长度 817fb726d48Sopenharmony_ci * @out: 查询结果的缓冲区,查询结果为json 818fb726d48Sopenharmony_ci * @outLen: 缓冲区长度 819fb726d48Sopenharmony_ci * 820fb726d48Sopenharmony_ci * return: >0:查询成功,返回查询结果数据长度; -1:失败 821fb726d48Sopenharmony_ci*/ 822fb726d48Sopenharmony_ciEMSCRIPTEN_KEEPALIVE int TraceStreamerSqlQuery(const uint8_t* sql, int sqlLen, uint8_t* out, int outLen); 823fb726d48Sopenharmony_ci 824fb726d48Sopenharmony_ci} // extern "C" 825fb726d48Sopenharmony_ci</code></pre> 826fb726d48Sopenharmony_ci <h3 class="mume-header fontColor"> 827fb726d48Sopenharmony_ci 你也可以执行如下命令查看应用帮助</h3> 828fb726d48Sopenharmony_ci 829fb726d48Sopenharmony_ci <p class="fontColor">./trace_streamer --help<br> 830fb726d48Sopenharmony_ci -i 选项可查看应用支持的事件源和具体的事件名列表 831fb726d48Sopenharmony_ci </p> 832fb726d48Sopenharmony_ci <h4 class="mume-header fontColor">trace_streamer支持解析的事件列表</h4> 833fb726d48Sopenharmony_ci <p class="fontColor">支持的事件列表参见<<<a href="./SupportEventList.html">SupportEventList.md</a>>></p> 834fb726d48Sopenharmony_ci <h2 class="mume-header fontColor">TraceStreamer重要概念介绍</h2> 835fb726d48Sopenharmony_ci 836fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">1. 进程和线程标识符</h3> 837fb726d48Sopenharmony_ci 838fb726d48Sopenharmony_ci <pre class="font-text light fontColor"><code class="fontColor"> 在通用操作系统中,进程号(pid/tgid)和线程号(tid)可能会被重复用于标识不同的进程或者线程。所以在trace数据源中,进程号(pid)和线程号(tid)也可能被重用。 839fb726d48Sopenharmony_ciTraceStreamer在解析数据过程中,使用ipid(internal pid)唯一标识进程, itid(internal tid)唯一标识线程。 840fb726d48Sopenharmony_ci</code></pre><h3 class="mume-header fontColor">2. 计量器</h3> 841fb726d48Sopenharmony_ci 842fb726d48Sopenharmony_ci <p class="fontColor">用来记录系统中各种随时间连续变化的数值。例如: CPU的频率, 内存的使用量, 界面刷新频率。</p> 843fb726d48Sopenharmony_ci <h4 class="mume-header fontColor">举例</h4> 844fb726d48Sopenharmony_ci 845fb726d48Sopenharmony_ci <p class="fontColor">CPU频率: <br> 846fb726d48Sopenharmony_ci <img src=".././figures/traceStreamer/cpu_frequency.png" alt="GitHub Logo"><br> 847fb726d48Sopenharmony_ci 内存占用: <br> 848fb726d48Sopenharmony_ci <img src=".././figures/traceStreamer/mem_usage.png" alt="GitHub Logo"></p> 849fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">3. 过滤器</h3> 850fb726d48Sopenharmony_ci 851fb726d48Sopenharmony_ci <p class="fontColor">TraceStreamer设计过程中使用了流式处理的思想,数据从入口进入以后,就像进入一条河流,从上游流向下游,在河道中央有很多过滤器,每种过滤器会将流过的数据中自己关注的内容吸附捕捉到。最终,每个过滤器都拥有了大量同类型的数据,而且这些数据都是按时间序列排列的。TraceStreamer使用filterid来标识同一种用途的数据,可以方便在UI中绘制。 <br> 852fb726d48Sopenharmony_ci ![image][filterimageid]</p> 853fb726d48Sopenharmony_ci <h2 class="mume-header fontColor">Stat表设计</h2> 854fb726d48Sopenharmony_ci 855fb726d48Sopenharmony_ci <p class="fontColor">具体内容参见 <a href="./des_stat.html">des_stat</a></p> 856fb726d48Sopenharmony_ci <h2 class="mume-header fontColor">trace_streamer开发环境搭建和编译运行指引</h2> 857fb726d48Sopenharmony_ci 858fb726d48Sopenharmony_ci <p class="fontColor">本应用使用gn作为构建工具。</p> 859fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">1、开发环境</h3> 860fb726d48Sopenharmony_ci 861fb726d48Sopenharmony_ci <p class="fontColor">ubuntu和mac使用vscode</p> 862fb726d48Sopenharmony_ci <h1 class="mume-header fontColor">对外部的依赖</h1> 863fb726d48Sopenharmony_ci 864fb726d48Sopenharmony_ci <p class="fontColor">本应用依赖与sqlite,protobuf(htrace解析部分依赖) </p> 865fb726d48Sopenharmony_ci <p class="fontColor">本应用同时依赖于src/protos目录下文件来生成相关pb.h,pb.cc文件 </p> 866fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">2.1、 编译linux和Mac版应用</h3> 867fb726d48Sopenharmony_ci 868fb726d48Sopenharmony_ci <p class="fontColor">在根目录下执行相关命令进行编译</p> 869fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">2.2、 编译wasm</h3> 870fb726d48Sopenharmony_ci 871fb726d48Sopenharmony_ci <p class="fontColor">在根目录下执行相关命令进行编译</p> 872fb726d48Sopenharmony_ci <h3 class="mume-header fontColor">2.3、开始编译</h3> 873fb726d48Sopenharmony_ci 874fb726d48Sopenharmony_ci <p class="fontColor">具体方法可参考<a href="./compile_trace_streamer.html">compile_trace_streamer</a></p> 875fb726d48Sopenharmony_ci 876fb726d48Sopenharmony_ci 877fb726d48Sopenharmony_ci</div> 878fb726d48Sopenharmony_ci<script type="text/javascript"> 879fb726d48Sopenharmony_ci window.onload = (() => { 880fb726d48Sopenharmony_ci let isDark = window.location.search; 881fb726d48Sopenharmony_ci if (isDark.indexOf('?') !== -1) { 882fb726d48Sopenharmony_ci isDark = isDark.substr(1, isDark.length - 1); 883fb726d48Sopenharmony_ci } 884fb726d48Sopenharmony_ci if (isDark === 'true') { 885fb726d48Sopenharmony_ci document.getElementById('body').setAttribute('style', 'background-color:#272C34;'); 886fb726d48Sopenharmony_ci let header = document.getElementsByClassName('fontColor'); 887fb726d48Sopenharmony_ci for (let i = 0; i < header.length; i++) { 888fb726d48Sopenharmony_ci header[i].style.color = '#fff'; 889fb726d48Sopenharmony_ci } 890fb726d48Sopenharmony_ci let lightBackGround = document.getElementsByClassName('light'); 891fb726d48Sopenharmony_ci for (let i = 0; i < lightBackGround.length; i++) { 892fb726d48Sopenharmony_ci lightBackGround[i].style.backgroundColor = '#32373F'; 893fb726d48Sopenharmony_ci } 894fb726d48Sopenharmony_ci } 895fb726d48Sopenharmony_ci }); 896fb726d48Sopenharmony_ci</script> 897fb726d48Sopenharmony_ci</body> 898fb726d48Sopenharmony_ci</html>