1. 程式人生 > 實用技巧 >Chrome DevTools谷歌瀏覽器開發者工具遠端除錯協議

Chrome DevTools谷歌瀏覽器開發者工具遠端除錯協議

[

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

互動協議包括髮送到頁面到 JSON 資料格式的命令和頁面生成的事件。我們在 Bink("upstream") 中定義這個協議,這樣,基於 Blink 的瀏覽器都能支援它。

最新的協議

tip-of-tree protocol 是易變的的,可能在任何時候都會中斷。然而,它有著協議的全部功能,穩定的釋出版本是他的一個子集。它沒有支援保證它引入的功能的向後相容性。你可以自己使用它與 Google Canary 建立連線。

tip-of-tree 協議經常變化。如果您需要特定Chrome客戶端的協議版本, 此程式碼段將提供協議JSON基於客戶端的/json/version

除錯協議檢視器

tip-of-tree 協議是在除錯協議檢視中 debugger protocol viewer 更具有可讀性。

Frozen 1.1 協議

Debugger協議版本1.1是協議的最新穩定版本,釋出於Chrome 31上。

除錯過線(Debugging over the wire)

開發者工具前段可以連線到遠端執行的 Chrome 例項進行除錯。為了讓此方案起作用,你應該使用遠端除錯埠命令列切換來啟動你主機的 Chrome 例項:

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

然後,你就可以開始一個客戶端 Chrome 例項,使用單獨的使用者配置檔案:

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

現在,你可以從客戶端導向指定的埠,獲取任何除錯的選項卡:http://localhost:9222

你會發現開發者工具互動介面與內嵌式的是相同的,這是為什麼:

  • 當你從客戶端瀏覽器導向到遠端的 Chrome 埠,開發者工具前端都是被主機 Chrome 服務著的,就如同 Web 伺服器服務 Web 應用程式。
  • 它通過 HTTP 通訊獲取 HTML,JavaScript 和 CSS 檔案
  • 一旦載入,開發者工具建立一個 Web Socket 連線至主機,並開始交換 JSON 資料。

在這種情況下,你可以用你自己的實現替代開發者工具前端。與導向在 http://localhost:9222 埠的 HTML 頁面不同,你的應用程式可以發現可用的頁面通過請求:http://localhost:9222/json並得到一個 JSON 物件和關於有著 WebSocket 地址的可檢測網頁的資訊,你可以把他們裝載到頁面中。

除錯瀏覽器遠端例項或附著到嵌入式裝置時,遠端除錯是特別有用的。Blink 埠業主負責暴露除錯連線給外部使用者。

監測協議通訊(Sniffing the protocol)

你可以檢查 Chrome DevTools 如何使用該協議。探索新功能時,這是特別方便。首先,在除錯埠開啟狀態執行 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 開啟,處於全屏狀態,開啟 DevTools 來對其進行監測。 CMD-R 在新的檢測器中,作第一次重啟。現在前往 Network 面板,通過 WebSocket 的過濾器,選擇連線,然後單擊框架選項卡。現在你可以很容易地看到 WebSocket 活動的框架,是你使用的 DevTools 的第一個例項。

除錯協議客戶端

許多應用程式和庫已經使用該協議。一些用來收集效能資料,其他一些用來在另一個編輯器中進行斷點除錯。Node.js 和 Python 中有包含著原始協議的庫。

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

使用偵錯程式擴充套件 API

為了允許第三方用此協議進行互動,我們介紹了 chrome.debugger 擴充套件 API,來暴露這個 JSON 訊息傳輸介面。其結果是,你不僅可以獲取遠端執行的 Chrome 例項,而且可以用自己的外掛它裝載它。

Chrome 偵錯程式擴充套件 API 在命令域提供了一個高等級的 API,name 和 body 在 SendCommand 呼叫中顯式設定。這個API 隱藏了請求 ID ,應答處理其響應,因此它允許 SendCommand 在回撥函式中提交結果報告。也可以和其他擴充套件 API 結合著使用。

如果你正在開發一個基於 Web 的 IDE ,你應該實現一個擴充套件功能,暴露你的網頁除錯功能,你的 IDE 就能夠開啟目標應用的頁面,設定斷點,在控制檯計算表示式,實時編輯 JavaScript 和 CSS ,顯示活動 DOM ,網路互動和任何其他任何開發者工具正在提交的方面。

開放嵌入式開發工具將終止 (terminate) 遠端連線,從而分離擴充套件。

併發協議客戶

我們目前不支援多個客戶端同時連線到協議。這包括開啟工具時而另一個客戶端處於連線狀態。在 bug 跟蹤系統中,crbug.com/129539 有如下條件;你可以為電子郵件更新標記。

當處於 disconnnection 狀態下,即將下線的客戶將獲得一個 detached 事件。例如: {"method":"Inspector.detached","params": {"reason":"replaced_with_devtools"}} 可能原因的列舉。(供參考:原始補丁)。斷開連線後,一些應用程式選擇暫停他們的狀態,並提供一個重新連線按鈕。

本文內容來自:Chrome DevTools谷歌瀏覽器開發者工具遠端除錯協議 – Break易站


—Author: Arvin Chen —Web Address: www.breakyizhan.com (Break易站)

]
  •   本文標題:Chrome DevTools谷歌瀏覽器開發者工具遠端除錯協議 - Break易站轉載請保留頁面地址:https://www.breakyizhan.com/chromeconsole/2285.html