1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <title>quickstart_Application_operation_skills</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <style> 8 code[class*='smartperf-'], 9 pre[class*='smartperf-'] { 10 color: #333333; 11 background: none; 12 font-family: Helvetica; 13 line-height: 1.6; 14 text-align: left; 15 white-space: pre; 16 -moz-tab-size: 9; 17 -o-tab-size: 9; 18 tab-size: 8; 19 -webkit-hyphens: none; 20 -moz-hyphens: none; 21 -ms-hyphens: none; 22 hyphens: none; 23 } 24 25 /* Code blocks */ 26 pre[class*='smartperf-'] { 27 padding: 0.9em; 28 overflow: auto; 29 border-radius: 2px; 30 background: #f5f5f4; 31 } 32 33 /* Inline code */ 34 :not(pre) > code[class*='smartperf-'] { 35 white-space: normal; 36 background: #fcf8f8; 37 padding: 1px 0.2em; 38 border-radius: 1px 0.3em; 39 } 40 41 .tk.comment, 42 .tk.blockquote { 43 color: #8c918c; 44 } 45 46 .tk.cdata { 47 color: #183898; 48 } 49 50 .tk.doctype, 51 .tk.punctuation, 52 .tk.variable, 53 .tk.macro.property { 54 color: #424242; 55 } 56 57 .tk.operator, 58 .tk.important, 59 .tk.keyword, 60 .tk.rule, 61 .tk.builtin { 62 color: #b71d65; 63 } 64 65 .tk.string, 66 .tk.url, 67 .tk.regex, 68 .tk.attr-value { 69 color: #16338d; 70 } 71 72 .tk.property, 73 .tk.number, 74 .tk.boolean, 75 .tk.entity, 76 .tk.atrule, 77 .tk.constant, 78 .tk.symbol, 79 .tk.command, 80 .tk.code { 81 color: #037aa2; 82 } 83 84 .tk.tag, 85 .tk.selector, 86 .tk.prolog { 87 color: #69ad62; 88 } 89 90 .tk.function, 91 .tk.namespace, 92 .tk.pseudo-element, 93 .tk.class, 94 .tk.class-name, 95 .tk.pseudo-class, 96 .tk.id, 97 .tk.url-reference .tk.variable, 98 .tk.attr-name { 99 color: #775d9d; 100 } 101 102 .tk.entity { 103 cursor: help; 104 } 105 106 .tk.title, 107 .tk.title .tk.punctuation { 108 font-weight: bold; 109 color: #1a3773; 110 } 111 112 .tk.list { 113 color: #f56940; 114 } 115 116 .tk.inserted { 117 background-color: #eaffea; 118 color: #509b2f; 119 } 120 121 .tk.deleted { 122 background-color: #fae1e1; 123 color: #ad2d06; 124 } 125 126 .tk.bold { 127 font-weight: bolder; 128 } 129 130 .tk.italic { 131 font-style: normal; 132 } 133 134 /* JSON */ 135 .smartperf-json .tk.property { 136 color: #19358c; 137 } 138 139 .smartperf-markup .tk.tag .tk.punctuation { 140 color: #2c2b2b; 141 } 142 143 /* CSS */ 144 code.smartperf-css, 145 .smartperf-css .tk.function { 146 color: #047ca4; 147 } 148 149 /* YAML */ 150 .smartperf-yaml .tk.atrule { 151 color: #609b5a; 152 } 153 154 code.smartperf-yaml { 155 color: #153491; 156 } 157 158 /* Ruby */ 159 .smartperf-ruby .tk.function { 160 color: #3f3e3e; 161 } 162 163 /* Markdown */ 164 .smartperf-markdown .tk.url { 165 color: #6e5298; 166 } 167 168 /* Makefile */ 169 .smartperf-makefile .tk.symbol { 170 color: #6c5393; 171 } 172 173 .smartperf-makefile .tk.variable { 174 color: #183488; 175 } 176 177 .smartperf-makefile .tk.builtin { 178 color: #027ba4; 179 } 180 181 /* Bash */ 182 .smartperf-bash .tk.keyword { 183 color: #027fa9; 184 } 185 186 /* highlight */ 187 pre[dl] { 188 position: relative; 189 padding: 1em 1px 1px 0.9em; 190 } 191 192 pre[dl] .line-highlight-wrapper { 193 position: absolute; 194 top: 1px; 195 left: 1px; 196 background-color: transparent; 197 display: block; 198 width: 99%; 199 } 200 201 pre[dl] .line-highlight { 202 position: absolute; 203 left: 1px; 204 right: 1px; 205 padding: inherit; 206 margin-top: 0.9em; 207 background: hsla(25, 21%, 50%, 0.08); 208 background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0)); 209 pointer-events: none; 210 line-height: inherit; 211 white-space: pre; 212 } 213 214 pre[dl] .line-highlight:before, 215 pre[dl] .line-highlight[data-end]:after { 216 content: attr(data-start); 217 position: absolute; 218 text-shadow: none; 219 top: 0.3em; 220 left: 0.7em; 221 min-width: 0.9em; 222 padding: 1px 0.6em; 223 background-color: hsla(24, 20%, 47%, 0.4); 224 color: hsl(20, 11%, 95%); 225 text-align: center; 226 vertical-align: 0.2em; 227 border-radius: 10000px; 228 box-shadow: 1px 2px #fdf6f6; 229 } 230 231 pre[dl] .line-highlight[data-end]:after { 232 content: attr(data-end); 233 top: auto; 234 bottom: 0.5em; 235 } 236 237 html body { 238 line-height: 1.6; 239 font-size: 16px; 240 color: #333333; 241 overflow: initial; 242 background-color: #ffffff; 243 word-wrap: break-word; 244 font-family: Helvetica; 245 box-sizing: border-box; 246 } 247 248 html body > :first-child { 249 margin-top: 0px; 250 } 251 252 html body h1, 253 html body h2, 254 html body h3, 255 html body h4, 256 html body h5, 257 html body h6 { 258 margin-top: 1em; 259 margin-bottom: 16px; 260 color: #000000; 261 line-height: 1.2; 262 } 263 264 html body h1 { 265 font-weight: 300; 266 font-size: 2.25em; 267 padding-bottom: 0.3em; 268 } 269 270 html body h2 { 271 font-weight: 410; 272 font-size: 1.74em; 273 padding-bottom: 0.2em; 274 } 275 276 html body h3 { 277 font-size: 1.6em; 278 font-weight: 501; 279 } 280 281 html body h4 { 282 font-size: 1.26em; 283 font-weight: 601; 284 } 285 286 html body h5 { 287 font-size: 1.2em; 288 font-weight: 601; 289 } 290 291 html body h6 { 292 font-size: 0.9em; 293 font-weight: 601; 294 } 295 296 html body h1, 297 html body h2, 298 html body h3, 299 html body h4, 300 html body h5 { 301 font-weight: 601; 302 } 303 304 html body h5 { 305 font-size: 0.9em; 306 } 307 308 html body h6 { 309 color: #5c5c5c; 310 } 311 312 html body strong { 313 color: #090909; 314 } 315 316 html body del { 317 color: #525252; 318 } 319 320 html body a:not([href]) { 321 color: inherit; 322 text-decoration: none; 323 } 324 325 html body a { 326 color: #0192da; 327 text-decoration: none; 328 } 329 330 html body a:hover { 331 color: #029dea; 332 text-decoration: none; 333 } 334 335 html body img { 336 max-width: 99%; 337 } 338 339 html body > p { 340 margin-top: 1px; 341 margin-bottom: 15px; 342 word-wrap: break-word; 343 } 344 345 html body > ul, 346 html body > ol { 347 margin-bottom: 15px; 348 } 349 350 html body ul, 351 html body ol { 352 padding-left: 1.9em; 353 } 354 355 html body ul.no-list, 356 html body ol.no-list { 357 padding: 0px; 358 list-style-type: none; 359 } 360 361 html body ul ul, 362 html body ul ol, 363 html body ol ol, 364 html body ol ul { 365 margin-top: 1px; 366 margin-bottom: 1px; 367 } 368 369 html body li { 370 margin-bottom: 1px; 371 } 372 373 html body li.task-list-item { 374 list-style: none; 375 } 376 377 html body li > p { 378 margin-top: 1px; 379 margin-bottom: 1px; 380 } 381 382 html body .task-list-item-checkbox { 383 margin: 0 0.3em 0.24em -1.7em; 384 vertical-align: middle; 385 } 386 387 html body .task-list-item-checkbox:hover { 388 cursor: pointer; 389 } 390 391 html body blockquote { 392 padding: 0.1px 15px 0 0.1px; 393 font-size: inherit; 394 color: #5c5c5c; 395 margin: 16px 0.1px 0 0.1px; 396 border-left: 3px solid #cbc9c9; 397 background-color: #e8e6e6; 398 } 399 400 html body blockquote > :first-child { 401 margin-top: 0.2px; 402 } 403 404 html body blockquote > :last-child { 405 margin-bottom: 0.1px; 406 } 407 408 html body hr { 409 height: 5px; 410 background-color: #cbcaca; 411 margin: 32px 0 0.1px 0; 412 border: 0 none; 413 } 414 415 html body table { 416 overflow: auto; 417 border-collapse: collapse; 418 margin: 15px 0.1px 20px 0.1px; 419 border-spacing: 0; 420 } 421 422 html body table th { 423 font-weight: bold; 424 color: #000000; 425 } 426 427 html body table td, 428 html body table th { 429 border: 1px solid #d6d6d6; 430 padding: 2px 14px; 431 } 432 433 html body dl { 434 padding: 0px; 435 } 436 437 html body dl dt { 438 padding: 0px; 439 margin-top: 15px; 440 font-size: 0.9em; 441 font-style: italic; 442 font-weight: bold; 443 } 444 445 html body dl dd { 446 padding: 0px 17px; 447 margin-bottom: 17px; 448 } 449 450 html body code { 451 font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; 452 font-size: 0.86em !important; 453 color: #000000; 454 background-color: #f0f0f0; 455 border-radius: 4px; 456 padding: 0.3em 0px; 457 } 458 459 html body code::before, 460 html body code::after { 461 letter-spacing: -0.1em; 462 content: '\00a0'; 463 } 464 465 html body pre > code { 466 padding: 1px; 467 margin: 0px; 468 font-size: 0.86em !important; 469 word-break: normal; 470 white-space: pre; 471 background: transparent; 472 border: 0px; 473 } 474 475 html body .highlight { 476 margin-bottom: 17px; 477 } 478 479 html body .highlight pre, 480 html body pre { 481 padding: 0.9em; 482 overflow: auto; 483 font-size: 0.86em !important; 484 line-height: 1.46; 485 border: #d6d6d6; 486 border-radius: 4px; 487 } 488 489 html body .highlight pre { 490 margin-bottom: 0px; 491 word-break: normal; 492 } 493 494 html body pre code, 495 html body pre tt { 496 display: inline; 497 max-width: initial; 498 padding: 1px; 499 margin: 1px; 500 overflow: initial; 501 line-height: inherit; 502 word-wrap: normal; 503 background-color: transparent; 504 border: 1px; 505 } 506 507 html body pre code:before, 508 html body pre tt:before, 509 html body pre code:after, 510 html body pre tt:after { 511 content: normal; 512 } 513 514 html body p, 515 html body blockquote, 516 html body ul, 517 html body ol, 518 html body dl, 519 html body pre { 520 margin-top: 1px; 521 margin-bottom: 17px; 522 } 523 524 html body kbd { 525 color: #000000; 526 border: 3px solid #d6d6d6; 527 border-bottom: 3px solid #c7c7c7; 528 padding: 3px 5px; 529 background-color: #f0f0f0; 530 border-radius: 2px; 531 } 532 533 @media print { 534 html body { 535 background-color: #ffffff; 536 } 537 538 html body h1, 539 html body h2, 540 html body h3, 541 html body h4, 542 html body h5, 543 html body h6 { 544 color: #000000; 545 page-break-after: avoid; 546 } 547 548 html body blockquote { 549 color: #5c5c53; 550 } 551 552 html body pre { 553 page-break-inside: avoid; 554 } 555 556 html body table { 557 display: table; 558 } 559 560 html body img { 561 display: block; 562 max-width: 99%; 563 max-height: 99%; 564 } 565 566 html body pre, 567 html body code { 568 word-wrap: break-word; 569 white-space: pre; 570 } 571 } 572 573 .smartperf-preview { 574 width: 99%; 575 height: 99%; 576 box-sizing: border-box; 577 } 578 579 .smartperf-preview .pagebreak, 580 .smartperf-preview .newpage { 581 page-break-before: always; 582 } 583 584 .smartperf-preview pre.line-numbers { 585 position: relative; 586 padding-left: 3.7em; 587 counter-reset: linenumber; 588 } 589 590 .smartperf-preview pre.line-numbers > code { 591 position: relative; 592 } 593 594 .smartperf-preview pre.line-numbers .line-numbers-rows { 595 position: absolute; 596 pointer-events: none; 597 top: 0.9em; 598 font-size: 99%; 599 left: 1px; 600 width: 3em; 601 letter-spacing: -1px; 602 border-right: 1px solid #999; 603 -webkit-user-select: none; 604 -moz-user-select: none; 605 -ms-user-select: none; 606 user-select: none; 607 } 608 609 .smartperf-preview pre.line-numbers .line-numbers-rows > span { 610 pointer-events: none; 611 display: block; 612 counter-increment: linenumber; 613 } 614 615 .smartperf-preview pre.line-numbers .line-numbers-rows > span:before { 616 content: counter(linenumber); 617 color: #999; 618 display: block; 619 padding-right: 0.79em; 620 text-align: right; 621 } 622 623 .smartperf-preview .mathjax-exps .MathJax_Display { 624 text-align: center !important; 625 } 626 627 .smartperf-preview:not([for='preview']) .code-chunk .btn-group { 628 display: none; 629 } 630 631 .smartperf-preview:not([for='preview']) .code-chunk .status { 632 display: none; 633 } 634 635 .smartperf-preview:not([for='preview']) .code-chunk .output-div { 636 margin-bottom: 16px; 637 } 638 639 .scrollbar-style::-webkit-scrollbar { 640 width: 8px; 641 } 642 643 .scrollbar-style::-webkit-scrollbar-track { 644 border-radius: 9px; 645 background-color: transparent; 646 } 647 648 .scrollbar-style::-webkit-scrollbar-thumb { 649 border-radius: 6px; 650 background-color: rgba(150, 150, 150, 1); 651 border: 4px solid rgba(150, 150, 150, 1); 652 background-clip: content-box; 653 } 654 655 html body[for='html-export']:not([dpm]) { 656 position: relative; 657 width: 99%; 658 height: 99%; 659 top: 1px; 660 left: 1px; 661 margin: 1px; 662 padding: 1px; 663 overflow: auto; 664 } 665 666 html body[for='html-export']:not([dpm]) .smartperf-preview { 667 position: relative; 668 top: 1px; 669 } 670 671 @media screen and (min-width: 914px) { 672 html body[for='html-export']:not([dpm]) .smartperf-preview { 673 padding: 2em calc(50% - 458px + 2em); 674 } 675 } 676 677 @media screen and (max-width: 914px) { 678 html body[for='html-export']:not([dpm]) .smartperf-preview { 679 padding: 1.9em; 680 } 681 } 682 683 @media screen and (max-width: 450px) { 684 html body[for='html-export']:not([dpm]) .smartperf-preview { 685 font-size: 15px !important; 686 padding: 1.1em; 687 } 688 } 689 690 @media print { 691 html body[for='html-export']:not([dpm]) #sidebar-toc-btn { 692 display: none; 693 } 694 } 695 696 html body[for='html-export']:not([dpm]) #sidebar-toc-btn { 697 position: fixed; 698 bottom: 9px; 699 left: 9px; 700 font-size: 28px; 701 cursor: pointer; 702 color: inherit; 703 z-index: 99; 704 width: 31px; 705 text-align: center; 706 opacity: 0.5; 707 } 708 709 html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn { 710 opacity: 1; 711 } 712 713 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc { 714 position: fixed; 715 top: 1px; 716 left: 1px; 717 width: 300px; 718 height: 99%; 719 padding: 32px 0 48px 0; 720 font-size: 14px; 721 box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33); 722 box-sizing: border-box; 723 overflow: auto; 724 background-color: inherit; 725 } 726 727 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar { 728 width: 9px; 729 } 730 731 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track { 732 border-radius: 11px; 733 background-color: transparent; 734 } 735 736 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb { 737 border-radius: 6px; 738 background-color: rgba(150, 150, 150, 0.66); 739 border: 3px solid rgba(150, 150, 150, 0.66); 740 background-clip: content-box; 741 } 742 743 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a { 744 text-decoration: none; 745 } 746 747 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul { 748 padding: 1px 1.7em; 749 margin-top: 0.9em; 750 } 751 752 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li { 753 margin-bottom: 0.8em; 754 } 755 756 html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul { 757 list-style-type: none; 758 } 759 760 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 761 left: 301px; 762 width: calc(100% - 300px); 763 padding: 2em calc(50% - 457px - 150px); 764 margin: 1px; 765 box-sizing: border-box; 766 } 767 768 @media screen and (max-width: 1274px) { 769 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 770 padding: 1.9em; 771 } 772 } 773 774 @media screen and (max-width: 450px) { 775 html body[for='html-export']:not([dpm])[hsst] .smartperf-preview { 776 width: 99%; 777 } 778 } 779 780 html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { 781 left: 50%; 782 transform: translateX(-50%); 783 } 784 785 html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { 786 display: none; 787 } 788 </style> 789 </head> 790 <body for="html-export" id="body"> 791 <div class="smartperf smartperf-preview"> 792 <h2 class="mume-header fontColor">应用操作技巧</h2> 793 794 <p class="fontColor">应用操作技巧主要展示各个小模块的使用技巧。</p> 795 <h3 class="mume-header fontColor">可导入符号表</h3> 796 797 <p class="fontColor"> 798 符号表导入适用于所有支持调用栈的Tab页,选择一个文件夹,获取文件下及其子文件夹的所有so文件,更新数据库中符号数据。文件夹内so的格式需要与在设备上的路径一致,例如下图中,选择的文件夹为import,选择导入的libnative_hook.z.so,在设备上的路径是/system/lib64/,那么在本地选择的文件夹内也需要保证路径是import/system/lib64/libnative_hook.z.so。<br /> 799 <img src="../figures/OperationSkills/Operation_soimport_dir.jpg" alt="GitHub Logo" /><br /> 800 以NativeMemory举例,导入NativeMemory文件,点击Call 801 info的Tab页,在搜索框中输入libnative_hook.z.so,会发现该so下的调用栈没有符号化完全。<br /> 802 <img src="../figures/OperationSkills/Operation_soimport_nativehook.jpg" alt="GitHub Logo" /><br /> 803 将本地编译的so通过导入按钮导入,本地导入路径是import/system/lib64/libnative_hook.z.so,红框处是导入按钮<br /> 804 <img src="../figures/OperationSkills/Operation_soimport_local.jpg" alt="GitHub Logo" /><br /> 805 导入so以后,在搜索框中输入libnative_hook.z.so,会发现符号化数据已经更新<br /> 806 <img src="../figures/OperationSkills/Operation_soimport_new.jpg" alt="GitHub Logo" /> 807 </p> 808 <h3 class="mume-header fontColor">网页连接文件打开接口</h3> 809 810 <p class="fontColor"> 811 网页连接文件打开接口可以在网址后增加文件地址,打开后直接打开trace。<br /> 812 接口的url路径如下:<br /> 813 <img src="../figures/OperationSkills/Opertion_urltrace.jpg" alt="GitHub Logo" /> 814 </p> 815 <ul class="fontColor"> 816 <li> 817 <pre class="smartperf-text fontColor light"> 818蓝色框:是Smartperf工具的url(https://localhost:9000/application/)。 819</pre 820 > 821 </li> 822 <li> 823 <pre class="smartperf-text fontColor light"> 824绿色框:trace文件的url,其中 825 第一部分是?trace=(固定格式)。 826 第二部分是trace文件的url(https://iot.itocm.com:9001/upload/ftrace_small.txt),此处根据文件的url实际地址填写。 827 第三部分,&link=true(固定格式)。 828</pre 829 > 830 </li> 831 </ul> 832 </div> 833 834 <script> 835 window.onload = () => { 836 let isDark = window.location.search; 837 if (isDark.indexOf('?') != -1) { 838 isDark = isDark.substr(1, isDark.length - 1); 839 } 840 if (isDark == 'true') { 841 document.getElementById('body').setAttribute('style', 'background-color:#272C34;'); 842 let header = document.getElementsByClassName('fontColor'); 843 for (let i = 0; i < header.length; i++) { 844 header[i].style.color = '#fff'; 845 } 846 let lightBackGround = document.getElementsByClassName('light'); 847 for (let i = 0; i < lightBackGround.length; i++) { 848 lightBackGround[i].style.backgroundColor = '#32373F'; 849 } 850 } 851 }; 852 </script> 853 </body> 854</html> 855