0

Je voudrais écrire une extension Chrome qui utilise le chrome.debugger API pour attacher à un processus node.js commencé avec "--inspect", afin de définir des points d'arrêt et de contrôler l'exécution du processus de noeud. J'ai consulté le documentation, et il semble que j'utiliserais l'API chrome.debugger.attach pour attacher le client de débogage au processus node.js. L'API attach accepte comme argument le targetId de la cible de débogage à attacher. Ma question est, comment puis-je trouver le targetId du processus Node.js, que je peux passer à attach?Comment obtenir les informations sur la cible de débogage pour un processus node.js dans une extension Google Chrome?

J'ai tenté de trouver la cible de débogage node.js à l'aide de l'API chrome.debugger.getTargets, mais le tableau résultant de targetInfo n'incluait pas le processus node.js. Le processus node.js apparaît dans chrome: // inspect, et je peux utiliser chrome devtools pour inspecter le processus. Je me demande si le processus node.js n'apparaît pas dans les résultats targetInfo car le processus node.js est une cible de débogage à distance, alors que tous les autres résultats de ce tableau étaient des cibles de débogage locales.

J'apprécierais tout aperçu de ceci. Je vous remercie.

Répondre

2

Si vous regardez comment Google a récupéré les sources distantes. par exemple. Utilisez l'inspecteur à l'intérieur du chrome://inspect.

Il y a une fonction javascript appelé populateRemoteTargets intérieur inspect.js

Sur ma machine, le paramètre de données été envoyé est ->

{ 
    "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" 
} 

Je ne sais pas étaient magasin google cette liste, mais est tout de toute évidence ce qui est stocké dans la configurer le dialogue. Il peut y avoir un moyen d'obtenir ces données, pas sûr. Sinon, vous pourriez peut-être maintenir la liste vous-même.

+0

Merci pour la réponse. Il semble que populateRemoteTargets reçoit des données remplies et transmises à partir de C++. Je l'ai tracé, et la structure de données est peuplée par devtools_device_discovery.cc ici: https://cs.chromium.org/chromium/src/chrome/browser/devtools/device/devtools_device_discovery.cc?gsn=CreateForAdb&l=568 Alors que le chrome. debugger.getTargets est implémenté dans shared_worker_devtools_manager.h: https://cs.chromium.org/chromium/src/content/browser/devtools/shared_worker_devtools_manager.h?gsn=AddAllAgentHosts&l=51 Peut-être que ce sont deux implémentations concurrentes pour interroger des cibles? – jbeard4

+0

Peut-être en lien: 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