--- title: Débogueur de module complémentaire slug: Mozilla/Add-ons/Add-on_Debugger tags: - Développement - Extensions - Firefox - Guide - JavaScript - Modules complémentaires - debogueur translation_of: 'https://extensionworkshop.com/documentation/develop/debugging/' ---
Le débogueur de module complémentaire (Add-on) vous permet d'exécuter un ensemble d'outils de développement de Firefox dans le contexte de votre module :
Le débogueur de module complémentaire n'est pas disponible pour les modules de superposition XUL requis pour le redémarrage. Pour déboguer des modules comme ceux-ci, utilisez la boîte à outils du navigateur.
Pour une rapide introduction sur le débogueur, regardez la rapide démonstration ici (en) :
{{EmbedYouTube("KU3Xsck7qy0")}}
Ceci décrit comment ouvrir le débogueur à partir de Firefox 45. Pour les versions antérieures de Firefox, vous devez :
activer le débogage d'extension en cochant les options «Activer les scripts chrome et boîte à outils de débogage des extensions» (Enable browser chrome and add-on debugging toolboxes) et «Activer le débogage distant» (Enable remote debugging) dans les outils de développement
trouver l'extension dans about:addons (pas about:debugging), et cliquer sur le bouton "Debogage" sur cette page.
Pour connecter le débogueur d'extensions à un module complémentaire, ouvrez la page modules dans Firefox, assurez-vous que la case "Activer le débogage des modules" est cochée et cliquez sur le bouton "Déboguer" à proximité de votre add-on dans la page.
Ensuite, vous verrez une boîte de dialogue vous demandant d'accepter une connexion entrante. Cliquez sur "OK", et le débogueur va commencer dans une fenêtre séparée. Notez que parfois la fenêtre du débogueur est masquée par la fenêtre principale de Firefox.
{{EmbedYouTube("tGGcA3bT3VA")}}
Le débogueur de module complémentaire a une apparence et un comportement proches de ceux de la Boîte à outils du navigateur, à ceci près que, que la portée de la boîte à outils est l'intégralité du navigateur, alors que celle du débogueur de module est sur le seul module pour lequel il a été lancé. À l'instar de la boîte à outils du navigateur, une barre d'outils en haut vous permet de basculer entre plusieurs outils différents. Dans Firefox 31, il n'y a qu'un seul outil, le débogueur JavaScript, mais à partir de Firefox 32, vous obtenez également la console et l'ardoise.
Il se comporte comme le débogueur JavaScript normal, à l'exception de sa portée qui est le module complémentaire et non une page Web. Sur la gauche, il répertorie les sources JavaScript:
bootstrap.js
: celui que vous avez écrit si votre extension est un module complémentaire "bootstrapé" (avec des commandes de démarrage écrites manuellement) , ou celui inclus dans le SDK si votre extension est un module complémentaire SDK.main.js
de votre module, tous les modules locaux livrés avec et les scripts de contenu actuellement chargésLes scripts de contenu ne sont listés que s'ils sont chargés. Par conséquent, si votre module complémentaire charge un script de contenu avec contentScriptFile
, le fichier n'apparaîtra pas dans les sources du débogueur tant que vous n'allez pas sur une page qui le charge.
Si vous définissez un point d'arrêt dans un script de contenu, il ne sera pas actif pour les instances du script de contenu chargées après la définition du point d'arrêt.
Par exemple, supposons que vous ayez un module complémentaire qui attache un script de contenu à chaque onglet chargé par l'utilisateur. Le script de contenu ajoute un gestionnaire de clics à la page. Dès que vous ouvrez un onglet, ce script de contenu sera répertorié dans le débogueur. Si vous définissez ensuite un point d'arrêt dans le gestionnaire de clics du script de contenu, l'exécution s'arrêtera lorsque vous cliquerez sur la page. Mais si vous ouvrez un nouvel onglet, il y a maintenant deux instances du script de contenu, et le point d'arrêt ne sera pas activé pour la deuxième instance. Vous devez définir un nouveau point d'arrêt si vous voulez qu'il fonctionne pour la seconde.
Nous étudions des améliorations à ce bug 1016046.
La console se comporte comme la console web, mais sa portée est le module complémentaire et non une page web.
Notez toutefois qu'elle s'exécute réellement dans le contexte du bootstrap.js
du module complémentaire, ce qui n'est peut-être pas ce à quoi vous vous attendez si votre module utilise le SDK : vous ne verrez aucun objet défini dans le main.js
de votre extension, et vous ne verrez pas require()
non plus. Ce problème fait l'objet d'un suivi bug 1005193.
Vous pouvez exécuter des instructions de la console dans le contexte de main.js
tandis que l'exécution est interrompue dans main.js
.
L'ardoise se comporte comme l'ardoise JavaScript normale, mais sa portée est l'extension et non la page web.
Comme pour la console, le module complémentaire s'exécute dans le contexte du bootstrap.js
du module complémentaire, même s'il utilise le SDK et, comme avec la console, vous pouvez exécuter le code de l'ardoise dans le contexte de main.js
pendant que l'exécution est suspendue dans main.js.
À partir de Firefox 37, vous pouvez déboguer les pages chrome: et about: en utilisant le débogueur normal, comme s'il s'agissait de pages de contenu ordinaires.