国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

揭秘Chrome DevTools:從原理到自定義調(diào)試工具

開發(fā) 前端
? Chrome DevTools 是前端開發(fā)者的必備工具,不僅可以用于調(diào)試 Chrome 網(wǎng)頁,還支持 Android WebView、Roma (跨平臺開發(fā)框架) 安卓&鴻蒙端 等平臺的調(diào)試。

引言

    Chrome DevTools 是前端開發(fā)者的必備工具,不僅可以用于調(diào)試 Chrome 網(wǎng)頁,還支持 Android WebView、Roma (跨平臺開發(fā)框架) 安卓&鴻蒙端 等平臺的調(diào)試。作為最常用的調(diào)試工具之一,DevTools 不僅能快速定位問題,還能讓我們深入了解調(diào)試的內(nèi)部機制。本文將從原理、組成部分、CDP 協(xié)議以及自定義調(diào)試工具的實現(xiàn), 帶你全面認識 DevTools。

Android WebView Devtools adb調(diào)試過程

一、DevTools的組成與原理

1.1 DevTools組成部分

Chrome DevTools主要由以下幾個部分組成:

?Frontend  前端界面:用戶交互的界面,提供各種調(diào)試功能。

?Backend 后端服務(wù):與瀏覽器內(nèi)核通信(如Chromium、V8等),執(zhí)行調(diào)試命令, 通過CDP與前端界面交互。

?CDP(Chrome DevTools Protocol):Chrome調(diào)試工具協(xié)議(JSON 格式的數(shù)據(jù)封裝協(xié)議)。

圖片圖片

1.2 工作原理

   DevTools 的核心是基于 Chrome DevTools Protocol (CDP), 工作原理可以簡單概括為:前端界面通過CDP協(xié)議與瀏覽器內(nèi)核通信,發(fā)送調(diào)試命令并接收調(diào)試信息。瀏覽器內(nèi)核根據(jù)接收到的命令執(zhí)行相應(yīng)的操作,并將結(jié)果返回給前端界面。

二、CDP協(xié)議詳解

2.1 什么是CDP協(xié)議?

   CDP(Chrome DevTools Protocol)是Chrome DevTools與瀏覽器內(nèi)核通信的協(xié)議。它基于WebSocket,允許開發(fā)者通過發(fā)送JSON格式的命令來控制瀏覽器行為,并獲取調(diào)試信息。通過 CDP,DevTools 能夠?qū)崟r與頁面交互,實現(xiàn)斷點調(diào)試、性能分析等功能。

2.2 CDP協(xié)議的核心特點

  • 基于JSON-RPC:CDP協(xié)議使用JSON格式傳輸數(shù)據(jù),簡單易讀。
  • 雙向通信:不僅調(diào)試器可以發(fā)送命令,瀏覽器也會主動推送事件(比如斷點觸發(fā)、網(wǎng)絡(luò)請求完成)。
  • 模塊化設(shè)計:CDP協(xié)議分為多個模塊(如DOM、Network、Runtime等),每個模塊負責不同的功能。

2.3 CDP協(xié)議的主要功能

  • DOM操作和CSS:獲取、修改DOM結(jié)構(gòu)和CSS樣式。
  • 網(wǎng)絡(luò)監(jiān)控:監(jiān)控網(wǎng)絡(luò)請求和響應(yīng)。
  • avaScript調(diào)試:設(shè)置斷點、單步執(zhí)行、查看調(diào)用棧等。
  • 性能分析:分析頁面加載性能、JavaScript執(zhí)行性能等。
  • 內(nèi)存管理:檢查和分析內(nèi)存使用情況,查找內(nèi)存泄漏等。

2.4 CDP協(xié)議的工作流程

  • 建立WebSocket連接:通過WebSocket與瀏覽器內(nèi)核建立連接。
  • 發(fā)送協(xié)議命令:前端界面發(fā)送JSON格式的命令。
  • 執(zhí)行協(xié)議命令:瀏覽器內(nèi)核執(zhí)行命令并返回結(jié)果。
  • 接收結(jié)果:前端界面接收并顯示結(jié)果。

三、了解CDP傳輸協(xié)議信息

   3.1 啟動工具

   啟用協(xié)議日志,DevTools的設(shè)置中勾選“rotocol Montor”

圖片圖片

圖片圖片

刷新頁面打開協(xié)議工具:

圖片圖片

查看協(xié)議的主要內(nèi)容,此時此刻就可以看到協(xié)議交互為JSON格式。

圖片圖片


3.2 分析CDP內(nèi)容

   當我們點擊代碼左邊設(shè)置斷點后,可以看到前端(Devtools面板)請求內(nèi)容:

圖片圖片

以及后端返回結(jié)果:

圖片圖片

四、自定義調(diào)試工具

   4.1 為何需要自定義調(diào)試工具?

       1. DevTools 的局限性

  • 針對網(wǎng)頁設(shè)計:DevTools 是為網(wǎng)頁開發(fā)設(shè)計的,其功能(如 DOM 檢查、CSS 調(diào)試、網(wǎng)絡(luò)請求分析等)主要圍繞 HTML、CSS 和 JavaScript 展開。對于非網(wǎng)頁應(yīng)用(如自定義語言、桌面應(yīng)用、嵌入式系統(tǒng)等),這些功能可能不適用。
  • 無法直接調(diào)試非網(wǎng)頁應(yīng)用:DevTools 依賴于瀏覽器的運行時環(huán)境(如 V8 引擎)和 Chrome DevTools Protocol (CDP)。如果應(yīng)用不是運行在瀏覽器中,或者使用了非 JavaScript 語言,DevTools 無法直接調(diào)試,比如 Roma 安卓和鴻蒙端在采用的App內(nèi)嵌入V8引擎,因此無法直接調(diào)試。

       2. 自定義調(diào)試工具的需求

  • 支持自定義語言或框架:如果應(yīng)用使用了自定義 DSL(領(lǐng)域特定語言)或其他編程語言(如 Python、C++ 等),需要開發(fā)專門的調(diào)試工具來支持這些語言的語法、運行時和調(diào)試功能。
  • 特定領(lǐng)域的調(diào)試需求:某些應(yīng)用場景(如物聯(lián)網(wǎng)設(shè)備調(diào)試、定制與自身業(yè)務(wù)結(jié)合的開發(fā)調(diào)試工具等)可能需要特定的調(diào)試功能,而這些功能在 DevTools 中并不存在。
  • 跨平臺支持:可以為不同平臺(例如 Roma Android\iOS\Harmony)開發(fā)統(tǒng)一的調(diào)試工具。

   4.2 其中的技術(shù)挑戰(zhàn)

除了CDP協(xié)議外還需要實現(xiàn):

  • 消息通道:調(diào)試工具需要在前端和后端之間建立可靠的消息通道,用于傳輸調(diào)試信息(如斷點、變量值、調(diào)用棧等)。
  • 運行時環(huán)境集成:對于非 JavaScript 語言,需要將調(diào)試模塊集成到運行時環(huán)境中(如 V8 引擎、Python 解釋器等),以支持斷點、單步執(zhí)行、變量檢查等功能。

   4.3 手搓自定義調(diào)試

    基于CDP, 實現(xiàn)自定義調(diào)試工具:

圖片圖片

1. 建立 WebSocket 通信層:   與DevTools調(diào)試面板建立通信。

圖片圖片

2. 完成瀏覽器Discovery協(xié)議:在瀏覽器中可以顯示應(yīng)用。 

圖片圖片

圖片圖片

3. 完善/轉(zhuǎn)發(fā)CDP協(xié)議:

      V8中已自帶了inspector能力,對于代碼的調(diào)試協(xié)議大多不需要我們處理,對于inspector外的協(xié)議需要單獨處理,例如 Console、Page等。其他語言庫如未實現(xiàn)inspector,需要單獨實現(xiàn)inspector部分,例如 QuickJS。

圖片圖片

4. 處理/轉(zhuǎn)發(fā)CDP協(xié)議:例如獲取 設(shè)置斷點、取消斷點、發(fā)起網(wǎng)絡(luò)請求。

   實現(xiàn)每一個CDP協(xié)議消息的發(fā)送與相應(yīng),例如 setBreakpointByUrl 協(xié)議完成 接收DevTools設(shè)置斷點到V8中。

圖片圖片

5.  Devtools進行擴展:

  基于CDP 定制自己的頁面 或 自定義協(xié)議命令,比如Roma Android調(diào)試中可以輸入 $Jue 調(diào)試當前頁面信息,實現(xiàn)evaluate協(xié)議執(zhí)行V8加載腳本代碼。

圖片圖片

圖片圖片

5. 為什么學(xué)習(xí)DevTools

  • 深入理解調(diào)試原理

通過學(xué)習(xí)DevTools的調(diào)試實現(xiàn)原理,可以更深入地理解調(diào)試工具的工作機制,從而更好地利用這些工具進行調(diào)試。

  • 自定義調(diào)試工具

自定義開發(fā)工具、設(shè)置斷點、單步執(zhí)行、查看調(diào)用棧等。

  • 分析處理性能問題

分析頁面加載性能、JavaScript執(zhí)行性能、內(nèi)存泄漏等。

  • 自定義調(diào)試工具

掌握CDP協(xié)議后,可以開發(fā)自定義的調(diào)試開發(fā)工具,滿足特定需求。比如自動化測試工具、性能分析工具等。

責任編輯:武曉燕 來源: 京東云開發(fā)者
相關(guān)推薦

2022-08-21 14:05:54

調(diào)試工具CDP

2022-08-26 08:17:32

Sidekick開源

2025-08-07 07:36:06

2017-10-09 10:04:48

JavaScriptChrome DevT調(diào)試

2022-08-15 20:48:28

Chrome安卓網(wǎng)頁

2017-09-12 15:11:12

Chrome

2022-09-02 09:01:36

ChromeWeb調(diào)試

2022-07-29 09:01:20

Chrome試源代碼調(diào)試技巧

2022-08-28 10:36:53

調(diào)試工具通用

2025-07-11 04:00:00

2017-08-23 09:26:16

Chromelive 狀態(tài)代碼

2021-05-11 07:51:30

React ref 前端

2021-05-11 10:03:06

性能優(yōu)化工具Performance

2021-05-19 08:20:59

ViewGrouplayout作用

2024-07-07 21:49:22

2020-05-09 11:26:43

ChromeFirefoxWindows

2025-04-02 07:29:14

2018-05-17 15:18:48

Logistic回歸算法機器學(xué)習(xí)

2015-02-12 15:33:43

微信SDK

2025-09-28 04:22:00

RAGSpring AI人工智能
點贊
收藏

51CTO技術(shù)棧公眾號

成人性生交大片免费看中文视频| 国产精品一区二区三区www| 99精品桃花视频在线观看| 亚洲一区二区中文字幕| 日本午夜免费一区二区| 亚洲精品99999| 岛国成人毛片| 国产a级全部精品| 成人在线看视频| 国产精品一区不卡| 一区不卡视频| 美女脱光内衣内裤视频久久影院| 成人av免费电影| 亚州av乱码久久精品蜜桃| 激情图片小说一区| 91在线免费视频| 成人在线免费观看网站| 日韩美女毛茸茸| 日韩深夜影院| 性欧美长视频免费观看不卡| а天堂中文最新一区二区三区| 亚洲国产欧美一区二区三区久久| 免费日本一区二区三区视频| 欧美色视频一区| 1区2区3区在线观看| 欧美三片在线视频观看 | 一本大道熟女人妻中文字幕在线 | 91亚洲大成网污www| 国产aaa免费视频| 成人午夜激情在线| 亚洲国产精品无码av| 99riav一区二区三区| 三上悠亚在线一区二区| 亚洲四区在线观看| 色影视在线视频资源站| 色综合久久久久网| 永久亚洲成a人片777777| 韩国精品久久久999| 亚洲熟妇av一区二区三区漫画| 国产精选一区| 韩日精品一区二区| 欧美一二三区在线观看| 天堂在线亚洲| 国产三区在线成人av| 日本一区二区精品| 欧美视频在线观看| 国产精品日韩一区二区 | 色老太综合网| 日韩女同互慰一区二区| 国产毛片久久久久久国产毛片| 欧美xxx视频| 综合av第一页| 桥本有菜av在线| 成人高潮a毛片免费观看网站| 欧美日韩精品欧美日韩精品一 | 亚洲男人网站| 国内精品久久久久影院薰衣草| 久草综合在线观看| 亚洲人成小说网站色在线| 羞羞视频网站在线观看| 精品视频在线免费观看| 白白色视频在线| 欧美经典一区二区| 91好吊色国产欧美日韩在线| 一区二区亚洲精品| 欧美私密网站| 欧美精选午夜久久久乱码6080| 中国字幕a在线看韩国电影| 九九久久久久99精品| 欧美三级午夜理伦三级中文幕| 一本久道久久综合狠狠爱亚洲精品| 国产亚洲一区二区三区| 蝌蚪视频在线播放| 一区二区三区四区视频| 成人羞羞网站入口| 综合国产精品久久久| 亚洲女人****多毛耸耸8| 美女尤物在线视频| 日本不卡免费高清视频| 美女国产一区二区| 日本aⅴ中文| 日韩在线免费高清视频| 日韩午夜一区| 二区中文字幕| 亚洲欧洲日韩国产| 欧美日韩免费观看一区=区三区| 北条麻妃在线观看| 日韩一区二区视频| 久草精品在线| 成熟丰满熟妇高潮xxxxx视频| 欧美午夜电影一区| 久久中文字幕导航| 潘金莲一级淫片aaaaa免费看| 超碰成人97| 91精品国产91久久久久青草| 91蜜桃免费观看视频| 污网站在线免费看| 91久久久亚洲精品| 成人欧美一区二区三区白人| 免费观看一级欧美片| 成人免费高清完整版在线观看| 91在线免费视频观看| 麻豆视频在线免费观看| 国内精品伊人久久| 国产精品77777竹菊影视小说| 国产日产精品久久久久久婷婷| 欧美黑人极品猛少妇色xxxxx| 日韩成人dvd| 日本人妖在线| 国产精品久久久久久五月尺| 久久先锋资源网| 亚洲精品.com| 中国 免费 av| 欧美精品一区二区蜜臀亚洲| 国产真实久久| 一级视频在线观看视频在线啦啦| 国产69精品久久久久99| 97精品久久久久中文字幕| 欧美黑人猛交| 久久久久成人精品免费播放动漫| 精品久久久久久亚洲精品| 免费看成人哺乳视频网站| 高清成人av| 91高清视频免费| 国产精品狼人久久影院观看方式| avtt久久| 91激情视频在线| 欧美黑人一级爽快片淫片高清| 99这里只有久久精品视频| 免费成人黄色网址| 新欧美整片sss第一页| 欧美激情极品| 日本在线观看免费| 国产精品乱码久久久久| 日韩av一级大片| 亚洲最新中文字幕| 久久久亚洲高清| 狠狠色狠狠色综合日日91app| 黄网站视频在线观看| 久久精品国产成人| 欧美日韩a区| 午夜视频在线观看网站| 2019av中文字幕| 国产丶欧美丶日本不卡视频| 欧美一区二区三区小说| 亚州一区二区三区| 国产一区二区片| 欧美三级日韩三级国产三级| 91看片一区| 韩国三级在线观看久| 男女爱爱免费网站| 不卡一区二区三区视频| 精品国产一区二区三区久久狼黑人 | 午夜电影一区| 精品久久在线| 男同在线观看| 在线观看wwwxxxx| 午夜伦全在线观看| 麻豆传媒在线免费| 蜜桃成人精品| 综合视频一区| 成人羞羞视频播放网站| 伊人www22综合色| 国产有码在线| 青青草视频免费在线观看| 香蕉久久aⅴ一区二区三区| 国产成人免费av一区二区午夜| 另类图片亚洲色图| 午夜伦伦电影理论片费看| 成年人福利视频| 色8久久久久| 成人污版视频| 欧美精品aa| 经典三级在线一区| 亚洲在线观看免费视频| 国产一区二区免费在线| 樱桃国产成人精品视频| 亚洲美女自拍视频| 亚洲一区二区高清| 亚洲男人电影天堂| 国产精品中文字幕一区二区三区| 亚洲**毛片| 日韩精品一区二区三区av| 中文字幕成在线观看| 中文字幕高清在线播放| gogo亚洲高清大胆美女人体| 成人影院天天5g天天爽无毒影院| 原纱央莉成人av片| 亚洲欧美视频在线| 欧美一区观看| 波多野结衣中文字幕久久| 综合综合综合综合综合网| 久久色在线视频| 五月天中文字幕一区二区| 在线精品自拍| av在线免费观看网站| xxxx18hd亚洲hd捆绑| 亚洲一区久久久| 欧美巨大黑人极品精男| 91麻豆精品国产91久久久久久|