0

我想寫一個Chrome擴展,它使用chrome.debugger API連接到以「--inspect」開頭的node.js進程,以便設置斷點並控制節點進程的執行。我諮詢了documentation,看來我會使用API​​ chrome.debugger.attach將調試客戶端連接到node.js進程。 attach API接受作爲要附加的調試目標的targetId的參數。我的問題是,我怎樣才能找到Node.js進程的targetId,我可以傳給attach如何獲取Google Chrome擴展中的node.js過程的調試目標信息?

我試圖使用chrome.debugger.getTargets API找到node.js調試目標,但是生成的targetInfo數組未包含node.js過程。 node.js進程確實出現在chrome:// inspect中,並且我可以使用chrome devtools來檢查進程。我想知道是否node.js進程沒有出現在targetInfo結果中,因爲node.js進程是遠程調試目標,而此數組中的所有其他結果都是本地調試目標。

我希望對此有所瞭解。謝謝。

回答

2

如果你看看谷歌如何檢索遠程源。例如。在chrome://inspect內使用檢查員。

有一個叫populateRemoteTargets javascript函數內inspect.js

在我的機器數據參數被髮送的 - >

{ 
    "adbConnected": true, 
    "adbModel": "Remote Target", 
    "adbSerial": "localhost", 
    "browsers": [ 
    { 
     "adbBrowserChromeVersion": 0, 
     "adbBrowserName": "Target", 
     "adbBrowserUser": "", 
     "adbBrowserVersion": "", 
     "id": "localhost:9222", 
     "pages": [], 
     "source": "remote" 
    }, 
    { 
     "adbBrowserChromeVersion": 0, 
     "adbBrowserName": "Target", 
     "adbBrowserUser": "", 
     "adbBrowserVersion": "", 
     "id": "localhost:9229", 
     "pages": [], 
     "source": "remote" 
    } 
    ], 
    "id": "device:localhost" 
} 

不知道是谷歌商店這份名單中,但顯然是它存儲的內容在配置對話框。可能有辦法獲得這些數據,不確定。如果沒有,你可以自己維護這個列表。

+0

感謝您的回覆。它看起來像populateRemoteTargets正在接收填充並從C++傳入的數據。我跟蹤它,數據結構由devtools_device_discovery.cc填充在這裏:https://cs.chromium.org/chromium/src/chrome/browser/devtools/device/devtools_device_discovery.cc?gsn=CreateForAdb&l=568而chrome。 debugger.getTargets在shared_worker_devtools_manager.h中實現:https://cs.chromium.org/chromium/src/content/browser/devtools/shared_worker_devtools_manager.h?gsn=AddAllAgentHosts&l=51也許這些是查詢目標的兩個競爭實現嗎? – jbeard4

+0

可能相關:https://bugs.chromium.org/p/chromium/issues/detail?id=412651&q=gettargets&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified – jbeard4

相關問題