Recherche…


Comment fonctionne Eclipse Remote Debugging derrière les scences

Le débogage Eclipse commence par ce que l'on appelle les agents.

La JVM , qui exécute les sources .class conformes, possède une fonctionnalité qui permet d'injecter des bibliothèques externes (écrites en Java ou en C ++) dans la machine virtuelle Java, à peu près à l'exécution. Ces bibliothèques externes sont appelées agents et peuvent modifier le contenu des fichiers .class exécutés. Ces agents ont accès à des fonctionnalités de la machine virtuelle Java qui ne sont pas accessibles à partir d'un code Java régulier en cours d' exécution dans la machine virtuelle Java et ils peuvent être utilisés pour faire des choses intéressantes comme l' injection et modifier le code source en cours d' exécution, le profilage etc. Des outils tels que JRebel utilise cette fonctionnalité pour réaliser leur magie.

Et pour passer un Agent Lib à une JVM, vous le faites via des arguments de démarrage, en utilisant le

 agentlib:libname[=options] format.

Nous transmettions en fait un agent Lib nommé jdwp à la JVM exécutant Tomcat. jdwp est une implémentation facultative, spécifique à JVM, du protocole JDWP (Java Debug Wire Protocol) utilisé pour définir la communication entre un débogueur et une machine virtuelle Java en cours d'exécution. Son implémentation, si elle est présente, est fournie en tant que bibliothèque native de la JVM en tant que jdwp.so ou jdwp.dll

Alors qu'est-ce que ça fait?

En termes simples, l'agent jdwp que nous transmettons sert essentiellement de lien entre l'instance JVM exécutant une application et un débogueur (qui peut être distant ou local). Comme il s'agit d'une bibliothèque d'agents, il est possible d'intercepter le code en cours d'exécution, de créer un pont entre la machine virtuelle Java et un débogueur, et d'appliquer les fonctionnalités d'un débogueur à la machine virtuelle Java. Dans l'architecture JVM, la fonctionnalité de débogage ne se trouve pas dans la JVM elle-même, mais elle est abstraite dans des outils externes (appelés à juste titre les débogueurs). Ces outils peuvent soit résider sur la machine locale à partir de la machine externe. C’est cette architecture modulaire découplée qui nous permet d’avoir une JVM exécutée sur une machine distante et utilisant le JDWP, de faire communiquer avec un débogueur distant.
En bref, voici comment fonctionne le débogueur Eclipse.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow