鍍金池/ 教程/ C++/ 遠程調試協(xié)議
谷歌瀏覽器開發(fā)工具綜述
在安卓設備上使用 Chrome 遠程調試功能
命令行 API 參考
快捷鍵
通過工作空間保存更改
展示 Chrome 調試協(xié)議客戶端實例
技巧和竅門
控制臺 API 參考
遠程調試協(xié)議
Settings
管理應用存儲空間
擴展 DevTools
遠程調試協(xié)議
使用 CSS 預處理器
分析 JavaScript 性能
使用控制臺
DevTools 插件實例
使用時間軸
編輯樣式以及 DOM
郵件列表
樹形提示 (不穩(wěn)定)
時間軸示例:強制同步布局的診斷
評估網絡性能
博客帖子
設備模式&移動仿真
開發(fā)工作流程
視頻 Videos
調試 JavaScript 腳本
JavaScript 內存分析
整合 DevTools
對 Chrome 開發(fā)工具的貢獻

遠程調試協(xié)議

在底層,Chrome 開發(fā)者工具是用 HTML,JavaScript 和 CSS 寫的 Web 應用程序。在 Javascript 運行時,它提供一個特殊的綁定,這允許它與 chrome 網頁進行交互并且容許裝載它們。交互協(xié)議包括被發(fā)送到頁面的命令,和該頁面生成的事件。盡管 Chrome 開發(fā)者工具是該協(xié)議的主要客戶,其中包括遠程調試(remote debugging,但有很多辦法可以讓第三方能夠使用它,并進行瀏覽器頁面準確裝載。我們將它描述在下面:

定義協(xié)議(Protocol)

交互協(xié)議包括發(fā)送到頁面到 JSON 數(shù)據(jù)格式的命令和頁面生成的事件。我們在 Bink("upstream") 中定義這個協(xié)議,這樣,基于 Blink 的瀏覽器都能支持它。

穩(wěn)定版本(Stable)

調試協(xié)議1.1版(Debugger protocol version 1.1)是目前協(xié)議發(fā)布版本中最穩(wěn)定的版本

對于谷歌 Chrome 31,我們致力于支持 V1.1 版本。該協(xié)議的所有后續(xù)1.* 版本將是 1.1 向后兼容。我們的協(xié)議向后兼容性的規(guī)范是:

  • 沒有命令或事件從協(xié)議中刪除。
  • 無需參數(shù)被添加到命令。
  • 無需參數(shù)從命令響應或事件中刪除。

以前的版本:Protocol v1.0 針對 Chrome 18 發(fā)布和支持的。Protocol v0.1 Chrome 16 發(fā)布和支持的。

Alpha

tip-of-tree protocol 是易變的的,可能在任何時候都會中斷。然而,它有著協(xié)議的全部功能,穩(wěn)定的發(fā)布版本是他的一個子集。它沒有支持保證它引入的功能的向后兼容性。你可以自己使用它與 Google Canary 建立連接。

tip-of-tree 協(xié)議是在調試協(xié)議視圖中 debugger protocol viewer 更具有可讀性。

監(jiān)測協(xié)議通信(Sniffing the protocol)

你可以檢查 Chrome DevTools 如何使用該協(xié)議。探索新功能時,這是特別方便。首先,在調試端口開啟狀態(tài)運行 Chrome 瀏覽器:

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --remote-debugging-port=9222 http://localhost:9222 http://chromium.org

然后,選擇在視察頁面( Inspectable Pages )列表中的選取 Chromium Projects 子項目。既然 DevTools 開啟,處于全屏狀態(tài),打開 DevTools 來對其進行監(jiān)測。 CMD-R 在新的檢測器中,作第一次重啟?,F(xiàn)在前往 Network 面板,通過 WebSocket 的過濾器,選擇連接,然后單擊框架選項卡?,F(xiàn)在你可以很容易地看到 WebSocket 活動的框架,是你使用的 DevTools 的第一個實例。

調試過線(Debugging over the wire)

開發(fā)者工具前段可以連接到遠程運行的 Chrome 實例進行調試。為了讓此方案起作用,你應該使用遠程調試端口命令行切換來啟動你主機的 Chrome 實例:

chrome.exe --remote-debugging-port=9222

然后,你就可以開始一個客戶端 Chrome 實例,使用單獨的用戶配置文件:

chrome.exe --user-data-dir=<some directory>

現(xiàn)在,你可以從客戶端導向指定的端口,獲取任何調試的選項卡:http://localhost:9222

你會發(fā)現(xiàn)開發(fā)者工具交互界面與內嵌式的是相同的,這是為什么:

  • 當你從客戶端瀏覽器導向到遠程的 Chrome 端口,開發(fā)者工具前端都是被主機 Chrome 服務著的,就如同 Web 服務器服務 Web 應用程序。
  • 它通過 HTTP 通信獲取 HTML,JavaScript 和 CSS 文件
  • 一旦加載,開發(fā)者工具建立一個 Web Socket 連接至主機,并開始交換 JSON 數(shù)據(jù)。

在這種情況下,你可以用你自己的實現(xiàn)替代開發(fā)者工具前端。與導向在 http://localhost:9222 端口的 HTML 頁面不同,你的應用程序可以發(fā)現(xiàn)可用的頁面通過請求:

http://localhost:9222/json

并得到一個 JSON 對象和關于有著 WebSocket 地址的可檢測網頁的信息,你可以把他們裝載到頁面中。

調試瀏覽器遠程實例或附著到嵌入式設備時,遠程調試是特別有用的。Blink 端口業(yè)主負責暴露調試連接給外部用戶。

調試協(xié)議客戶端

許多應用程序和庫已經使用該協(xié)議。一些用來收集性能數(shù)據(jù),其他一些用來在另一個編輯器中進行斷點調試。Node.js 和 Python 中有包含著原始協(xié)議的庫。

許多客戶端展示在這里:Showcased Debugging Protocol Clients。

使用調試器擴展 API

為了允許第三方用此協(xié)議進行交互,我們介紹了 chrome.debugger 擴展 API,來暴露這個 JSON 消息傳輸接口。其結果是,你不僅可以獲取遠程運行的 Chrome 實例,而且可以用自己的插件它裝載它。

Chrome 調試器擴展 API 在命令域提供了一個高等級的 API,name 和 body 在 SendCommand 調用中顯式設置。這個API 隱藏了請求 ID ,應答處理其響應,因此它允許 SendCommand 在回調函數(shù)中提交結果報告。也可以和其他擴展 API 結合著使用。

如果你正在開發(fā)一個基于 Web 的 IDE ,你應該實現(xiàn)一個擴展功能,暴露你的網頁調試功能,你的 IDE 就能夠打開目標應用的頁面,設置斷點,在控制臺計算表達式,實時編輯 JavaScript 和 CSS ,顯示活動 DOM ,網絡交互和任何其他任何開發(fā)者工具正在提交的方面。

開放嵌入式開發(fā)工具將終止 (terminate) 遠程連接,從而分離擴展。

并發(fā)協(xié)議客戶

我們目前不支持多個客戶端同時連接到協(xié)議。這包括打開工具時而另一個客戶端處于連接狀態(tài)。在 bug 跟蹤系統(tǒng)中,crbug.com/129539 有如下條件;你可以為電子郵件更新標記。

當處于 disconnnection 狀態(tài)下,即將下線的客戶將獲得一個 detached 事件。例如: {"method":"Inspector.detached","params": {"reason":"replaced_with_devtools"}} 斷開連接后,一些應用程序選擇暫停他們的狀態(tài),并提供一個重新連接按鈕。

上一篇:技巧和竅門下一篇:整合 DevTools