Brevet FR2798204A1 — publié le 20010309

POINTS D'INTERRUPTION CLASSES METHODE DE DEBOGAGE DES PROGRAMMES INFORMATIQUES CONTEXTE DE L'INVENTION Domaine technique La présente invention concerne une manière générale la programmation des ordinateurs, et plus particulièrement des mécanismes et méthodes pour deboguer les programmes informatiques. Nature du contexte Depuis l'aube de l'ère informatique, les systèmes informatiques sont devenus des appareils extrêmement sophistiqués qui peuvent être configurés de très nombreuses manières. Les systèmes informatiques comprennent normalement une combinaison d'éléments matériels, tels que des semi-conducteurs et des cartes imprimées, et d'éléments logiciels, aussi appelés programmes informatiques. Au fur et à mesure que les progrès de la technique des semi-conducteurs et de l'architecture informatique rendu le matériel informatique plus performant, des logiciels plus sophistiqués ont été développés pour profiter meilleures performances du matériel, de sorte qu' 'ourd'hui, les systèmes informatiques sont beaucoup plus puissants qu'il y a seulement quelques années. Au plus un logiciel est sophistiqué et complexe, au plus il est difficile à déboguer. Le débogage consiste à détecter les problèmes, ou "bogues", au cours du développement d'un programme informatique. La plupart des environnements de programmation modernes comprennent un débogueur qui fournit des outils pour tester et déboguer les programmes informatiques. Les débogueurs connus permettent à l'utilisateur de définir un ou plusieurs points d'interruption dans le programme; il s'agit de points -où l'exécution du programme est arrêtée pour permettre d'examiner le programme afin de vérifier que son exécution se déroule comme prévu. Lors du débogage d'un programme sophistiqué, l'utilisateur peut spécifier plusieurs points d'interruption pour s'assurer que le code fonctionne correctement. Une autre fonction offerte par de nombreux débogueurs connus est la fonction "Aller à" qui permet ' l'utilisateur de sélectionner une instruction dans le programme et de l'exécuter jusqu'à celle-ci. Les fonctions "Aller à" connues fonctionnent correctement si aucun point interruption n'a été défini dans le programme. Mais, si un plusieurs points d'interruption ont été définis, le débogueur s'arrête au premier point d'interruption qu'il rencontre, ce qui a pour effet de désactiver la fonction "Aller à". L'utilisateur peut toujours continuer en sélectionnant à nouveau la fonction "Aller à" pour la même instruction mais, ' un autre point d'interruption est rencontré avant l'instruction sélectionnée, le débogueur s'arrête à nouveau et désactive la fonction "Aller à". Dans un programme contenant plusieurs points d'interruption, l'utilisateur peut être contraint de relancer la fonction "Aller à" plusieurs fois pour pouvoir exécuter le programme jusqu'à l'instruction sélectionnée. Ces interruptions de la fonction "Aller à" par les points d'interruption sont frustrantes pour les utilisateurs de débogueurs. Une manière d'éviter les interruptions aux points d'interruption consiste à désactiver ou supprimer les points d'interruption situés en amont de l'instruction sélectionnée. Cependant, certains débogueurs permettent seulement de créer et d'effacer des points d'interruption individuels, d'autres permettant en plus de les activer ou les désactiver individuellement. Par conséquent, si 50 points d'interruption sont situés en amont de l'instruction sélectionnée, l'utilisateur devra supprimer ou désactiver manuellement chacun ces 50 points d'interruption. Cette méthode implique en outre que l'utilisateur connaisse tous les chemins possibles de l'exécution du programme, et supprime ou désactive les points d'interruptions situés sur tous les chemins possibles. I1 est inutile de préciser que le fait de désactiver ou supprimer manuellement tous les points d'interruption pour pouvoir exécuter une fonction "Aller sans interruption est un tribut important à payer lorsqu' doit deboguer un programme complexe. I1 serait possible d'effacer ou de désactiver globalement tous les points d'interruption, mais cela obligerait l'utilisateur à rétablir ou réactiver tous les points d'interruption un par un. l'utilisateur a passé beaucoup de temps à définir des points d'interruption, la dernière chose qu'il désire faire est les effacer ou désactiver tous. Sans un mécanisme et méthode pour exécuter la commande "Aller à" sans arrêter le programme à chaque point d'interruption, l'industrie informatique continuera à souffrir de méthodes et d'outils inefficaces pour déboguer les programmes informatiques. RESLTME DE L'INVENTION 1 Selon la présente invention, des points d'interruption classés sont définis dans un programme informatique pour permettre à un débogueur de déterminer si l'exécution du programme doit être arrêtée ou non lorsqu'un point d'interruption classé est rencontré, en comparant le rang de ce point d'interruption avec un rang-seuil. Dans une version préférentielle, le rang-seuil est le rang d'une fonction "Aller à", et les points d'interruption classés interrompent l'exécution du programme informatique uniquement si leur rang est supérieur au rang-seuil de la fonction "Aller à". La présente invention offre ainsi un mécanisme permettant d'ignorer tout ou partie des points d'interruption dans un programme informatique lors de l'exécution de fonctions de débogage tels que la fonction "Aller à". Ces caractéristiques et avantages de l'invention, entre autres, ressortent de la description détaillée suivante de ses versions préférentielles, et des dessins qui l'accompagnent. BREVE DESCRIPTION DES DESSINS Les versions préférentielles de la présente invention sont décrites ci-après à l'aide des dessins joints sur lesquels les mêmes numéros désignent les mêmes éléments. La figure 1 représente un schéma fonctionnel d'un dispositif correspondant aux versions préférentielles de présente invention. La figure 2 représente un schéma d'enchaînement d'étapes d'une méthode de débogage correspondant aux versions préférentielles. figure 3 représente un schéma fonctionnel montrant exemple spécifique de configuration de débogueur et programme informatique correspondant aux versions préférentielles. figure 4 représente un schéma d'enchaînement d'étapes d'une méthode appliquée par l'interface utilisateur de figure 3, qui permet à l'utilisateur de définir un point d'interruption et de lancer une fonction "Aller à". figure 5 représente un schéma d'enchaînement d'étapes d'une méthode appliquée par l'évaluateur d'expression de figure 3 pour évaluer les données entrantes émises par l'interface utilisateur de la figure 3. figure 6 représente un schéma d'enchaînement d'étapes d'une méthode appliquée par le gestionnaire de points d'interruption de la figure 3 pour définir un point d'interruption classé. La figure 7 représente un schéma d'enchaînement d'étapes d'une méthode appliquée par le gestionnaire points d'interruption de la figure 3 pour définir point d'interruption "Aller à". La figure 8 représente un schéma fonctionnel montrant une table de points d'interruption selon une configuration spécifique correspondant aux versions préférentielles La figure 9 représente un schéma d'enchaînement d'étapes d'une méthode 900 appliquée par le gestionnaire points d'interruption de la figure 3 lorsqu'un point d'interruption est rencontré au cours de l'exécution du programme informatique. La figure 10 représente une portion de code source illustrant les concepts de points d'interruption classés. La figure 11 représente une portion de code objet et assembleur correspondant à la portion de code source de la figure 10. La figure 12 représente la même portion de code que la figure 11, avec une instruction "Piéger" insérée dans le label 3 pour générer un point d'interruption lorsque l'instruction "Piéger" est exécutée. La figure 13 représente la même portion de code que la figure 11, avec une instruction "Piéger" insérée dans le label 1 pour générer un point d'interruption et une instruction "Piéger" insérée dans le label 4 pour générer point interruption "Aller à". PRÉSENTATION La présente invention est utilisée dans un environnement programmation pour développer des programmes informatiques. Pour les personnes qui ne sont pas familiarisées avec les techniques de développement de logiciels, brève présentation suivante fournit des informations sur le contexte aideront le lecteur à comprendre la présente invention. Environnements de programmation modernes programmes informatiques sont construits à l'aide d'un plusieurs langages de programmation. Comme la langue française, les langages de programmation servent à etablir une série d'instructions qui ont une signification particulière pour le rédacteur (c'est à dire le programmeur). Le programmeur rédige d'abord un programme informatique sous une forme lisible par l'homme (appelée code source) imposée par le langage de programmation, aboutissant à chaîne d'instructions en code source. Le programmeur utilise ensuite des mecanismes qui convertissent le programme informatique dans forme compréhensible par les systèmes informatiques (appelée format lisible par machine ou code et). Ces mécanismes sont appelés "compilateurs"; cependant, il faut savoir que le terme "compilateur" utilisé dans cette acception désigne généralement tout mécanisme qui convertit une représentation d'un programme informatique en une autre représentation de ce programme. format lisible par machine au sens où on 1 entend ici est chaîne d'instructions binaires (c'est à dire de 0 et de 1) qui constituent des codes opération (aussi appelés "codes compréhensibles par l'ordinateur. Le compilateur compile chaque instruction lisible par l'homme en une ou plusieurs instructions lisibles par la machine. Les compilateurs traduisent généralement chaque instruction lisible l'homme de la chaîne d'instructions en code source en une plusieurs instructions en langage intermediaire qui sont ensuite converties en instructions correspondantes lisibles par machine. Une fois les instructions lisibles par machine générées, le programme informatique peut être exécuté sur le système pour lequel il a été conçu. Les programmes informatiques comprennent généralement une ou plusieurs variables de programme qui contiennent des données importantes. Ces variables sont généralement représentées des labels de texte dans les programmes informatique code évolué ou intermédiaire. Le concept de variables de programme est bien connu dans ce domaine. Les environnements de programmation modernes peuvent comprendre très nombreuses combinaisons d'éléments. Par exemple, la plupart des environnements de programmation comprennent un programme d'édition ou un bloc-notes qui permet au programmeur d'afficher le code source. Un compilateur est utilisé, comme nous l'avons vu, pour générer le format lisible par machine à partir du code source. Un éditeur de liens peut également être utilisé pour compiler séparément des portions de programme et les relier entre elles après la compilation. Certains environnements de programmation comprennent le matériel d'exécution, c'est à dire le matériel lequel le programme informatique devra tourner. La plupart des environnements de programmation modernes comprennent aussi un débogueur pour aider le programmeur à localiser problèmes dans son programme informatique. Débogage d'un programme informatique Quelle que soit la complexité d' programme informatique, il est susceptible de ne pas fonctionner exactement comme prévu à cause d'erreurs, aussi appelées "bogues", insérées par le programmeur. Pour aider le programmeur à localiser les bogues dans son programme, la plupart des environnements de programmation modernes comprennent un débogueur qui offre au programmeur une palette d'outils pour localiser les bogues. Par exemple, un débogueur type contient une fonction de point d'interruption qui arrête l'exécution du programme lorsqu'un événement spécifié se produit. Une fois l'exécution du programme arrêtée, le débogueur permet généralement au programmeur d'examiner le contenu de la mémoire et l'état du programme pour déterminer si ce dernier est correct ou non. Le débogueur peut aussi permettre au programmeur de spécifier les conditions d'exécution d'un programme d'analyse pour enregistrer en mémoire une liste de tous les événements importants pour le programmeur sans arrêter l'exécution du code. La présente invention s'applique à tout mécanisme ou système de débogage actuellement connu ou à venir. Description détaillée Selon les versions préférentielles de la présente invention, les points d'interruption classés permettent à l'utilisateur d'exécuter une fonction "Aller à" en lui attribuant un rang égal ou supérieur à celui des points d'interruption intermédiaires. Si un point d'interruption est important, on peut lui attribuer un rang suffisamment élevé pour interrompre l'exécution du programme s'il le rencontre lors de l'exécution d'une fonction "Aller à". Ainsi, on peut attribuer à une fonction "Aller à" un rang qui lui permettra d'ignorer la majorité des points d'interruption et d'arrêter l'exécution sur le(s) point (s) d'interruption le (s) plus important(s). Cette possibilité augmente notablement le rendement du programmeur (appele ici "l'utilisateur") car le débogueur n'arrête pas l'exécution de la fonction "Aller à" à chaque point d'interruption défini. Sur la figure 1, le système informatique 100 selon la version préférentielle est un ordinateur IBM AS/400 amélioré. Toutefois, les spécialistes comprendront que les mécanismes et dispositifs de la présente invention s'appliquent également à tout système informatique, il s'agisse d'un ordinateur multi-utilisateur complexe d'un poste de travail mono-utilisateur. Comme le montre la figure 1, le système informatique 100 comprend un processeur 110 connecté à une mémoire centrale 120, une interface de stockage 130, une interface de terminal 140 et interface de réseau 150. Ces eléments du système sont interconnectés au moyen d'un bus système 160. L'interface de stockage 130 sert à connecter des unités de stockage (telles qu'une unité de stockage à accès direct 155) au système informatique 100. Un exemple type unité de stockage à accès direct type est le lecteur de disquette, qui permet d'enregistrer et de lire des données sur disquette 195. La mémoire centrale 120 contient des données 122, un système d'exploitation 124, un programme informatique 125 et environnement de programmation 126 comprenant un débogueur 127 qui permet de définir un ou plusieurs points d'interruption classés 128 et un rang-seuil 129 selon les versions préférentielles. Le système informatique 100 utilise des mécanismes d'adressage virtuel connus qui permettent à ses programmes de se comporter comme s'ils avaient accès à une unique et vaste unité de stockage, et non à plusieurs unités de stockage plus petites telles que la mémoire centrale 120 et l'unité de stockage à accès direct 155. C'est pourquoi, bien que les données 122, le système d'exploitation 124, le programme informatique 125 et l'environnement de programmation 126 soient représentés à l'intérieur de la mémoire centrale 120, les spécialistes comprendront que ces ets ne sont pas tous entièrement contenus dans la mémoire centrale 120 en même temps. On notera aussi que le terme "mémoire" utilisé ici désigne l'ensemble de la mémoire virtuelle du système informatique 100. Les données 122 représentent n'importe quelles données entrées ou sorties par n'importe quel programme du système informatique 100. Le système d'exploitation est un système d'exploitation multitâche connu dans l'industrie sous le nom de 0S/400; cependant, les spécialistes comprendront que l'intention et l'objet de la présente invention ne sont pas limités à un système d'exploitation particulier. Le programme informatique 125 représente un programme sous 'importe quelle forme, qu' soit en code source, langage intermédiaire, code machine autre. Le programme informatique 125 peut comprendre des programmes système (p. ex., un système d'exploitation), des programmes d'application ou tout autre forme ou type de programme informatique. L'environnement de programmation 126 est un environnement permettant aux programmeurs (que nous appellerons aussi "utilisateurs") de développer et de déboguer leurs programmes informatiques. Le débogueur 127 est un débogueur qui génère et reconnaît points d'interruption classés 128. Le rang-seuil 129 est rang défini de préférence par 1 utilisateur, sa valeur déterminant si un point d'interruption classé quelconque provoque ou non l'arrêt de l'exécution du programme informatique 125. Le rang-seuil 129 peut être défini directement par l'utilisateur, ou peut être défini par un utilisateur spécifiant un rang pour l' des points d'interruption classés 128, tel qu'un point d'interruption "Aller à". Le processeur 110 peut être constitué d'un ou plusieurs microprocesseurs et/ou circuits intégrés. Le processeur 110 exécute des instructions de programme enregistrées dans la mémoire centrale 120. La mémoire centrale 120 contient des programmes et des données auxquels le processeur 110 peut accéder. Lorsque le, système informatique 100 démarre, le processeur 110 exécute d'abord les instructions du système d'exploitation 124. Le système d'exploitation 124 est un programme sophistiqué qui gère les ressources du système informatique 100. Certaines de ces ressources sont le processeur 110, la mémoire centrale 120, l'interface de stockage l'interface de terminal 140, l'interface de réseau 150 le bus système 160. Bien que le système informatique 100 représenté contienne un seul processeur et un seul bus système, les spécialistes comprendront la présente invention peut être appliquée à un système informatique possédant plusieurs processeurs et/ou bus. En outre les interfaces qui sont utilisées dans la version préférentielle comprennent chacune des microprocesseurs séparés, entièrement programmés, qui servent à soulager processeur 110 d'applications comportant de nombreux calculs. Cependant, les spécialistes comprendront que la présente invention s'applique aussi à des systèmes informatiques qui utilisent simplement des adaptateurs d'E/S pour effectuer des opérations similaires. L'interface de terminal 140 sert à connecter directement un ou plusieurs terminaux 165 au système informatique 100. Ces terminaux 1 qui peuvent être des terminaux non intelligents ou des postes de travail entièrement programmables, servent à permettre aux administrateurs et utilisateurs des systemes de communiquer avec le système informatique 100. On notera cependant que, bien que l'interface de terminal 140 permette de communiquer avec un ou plusieurs terminaux 165, le système informatique 100 ne nécessite pas obligatoirement un terminal 165, toutes les interactions avec les autres utilisateurs et les autres operations pouvant avoir lieu via l'interface de réseau 150. L'interface de réseau 150 sert à connecter autres systèmes informatiques et/ou postes de travail (p. , 175 sur la figure 1) au système informatique 100 via un réseau 170. La présente invention s'applique également quel que soit le mode de connexion du système informatique 100 à d'autres systèmes informatiques et/ou postes de travail, et que la connexion réseau 170 soit réalisée à l'aide de techniques analogiques et/ou numériques actuelles ou de mécanismes de gestion de réseau à venir. De plus, de très nombreux protocoles de gestion de réseau peuvent être utilisés pour communiquer un réseau. Ces protocoles sont des programmes informatiques spécialisés qui permettent à des ordinateurs de communiquer via le réseau 170. TCP/IP (Transmission Control Protocol/Internet Protocol) est un exemple de protocole de gestion de réseau approprié. I1 est maintenant important de noter que, bien la présente invention ait été et continue à être décrite dans le contexte d'un système informatique parfaitement opérationnel, les spécialistes comprendront que la présente invention peut être distribuée comme produit logiciel sous differentes formes, qu'elle s'applique également quel que soit le type de support de signaux utilisé pour la distribuer réellement. Les supports de signaux appropriés comprennent, par exemple, des supports enregistrables tels que des disquettes ex., 195 sur figure 1) ou des CD-ROM, et des supports de transmission tels que des lignes de communication numeriques ou analogiques. La suite de la présente description précise comment les points d'interruption classés 128 sont utilisés dans un débogueur 127. Sur la figure 2, une méthode 200 pour déboguer un programme informatique à l'aide de points d'interruption classés commence par définir un ou plusieurs points d'interruption classés 128 dans le programme informatique 125 (étape 205). Ensuite, la méthode 200 définit un rang-seuil (étape 210). Le programme informatique 125 est alors exécuté (étape 215). Si aucun point d'interruption n'est rencontré (étape 220 = NON), l'exécution du programme se poursuit (étape 230). Lorsqu'un point d'interruption est rencontré (étape 220 = OUI), le point d'interruption (appelé ici point d'interruption courant") est contrôlé pour déterminer ' son rang est supérieur au rang-seuil 129 (étape 250) . Si c'est le cas (étape 250 = OUI), un point d'interruption de rang supérieur a été rencontré, ce qui interrompt l'exécution du programme informatique (étape 290). L'exécution du programme étant interrompue, l'utilisateur peut examiner l'état du programme au moment où le point interruption a été rencontré pour déterminer si le programme été exécuté comme prévu. Si le rang du point d'interruption courant n'est pas supérieur au rang-seuil (étape = NON), il doit être ignoré car il n'est pas d'un rang suffisant pour justifier l'interruption de l'exécution programme. Pour ignorer le point d'interruption, son code original est émulé (étape 260), et l'exécution du programme est ensuite reprise (étape 270). La méthode 200 offre une souplesse beaucoup plus grande pour déboguer les programmes informatiques que les techniques de débogage antérieures. L'état de la technique antérieur nécessite de désactiver ou de supprimer manuellement et individuellement chaque point d'interruption pour que la fonction "Aller à" ne s'arrête . En revanche, la méthode 200 définit un rang pour les points d'interruption, et compare le rang du point d'interruption courant avec celui du point d'interruption "Aller à". Si le rang du point d'interruption courant ne dépasse pas celui point d'interruption "Aller à", le point d'interruption courant est ignoré sans que son existence ou son état soient affectés. Les figures 3 à 9 représentent une application particulière d'un débogueur approprié et d'une méthode correspondant aux versions préferentielles. Cette application nécessite une fonction "Aller à" dotée d'un rang correspondant qui définit le rang-seuil 129 De plus, cette application utilise des points d'interruption classés et le rang de la fonction "Aller à" pour déterminer si l'exécution du programme est interrompue ou non lorsqu'un point d'interruption est rencontré au cours de l'exécution de la fonction "Aller à", selon le rang du point d'interruption courant par rapport au rang-seuil. Sur la figure 3, un débogueur 127 approprié comprend une interface utilisateur 310, un évaluateur d'expressions 320 et un gestionnaire de points d'interruption 330 qui dialogue avec le programme informatique 125 à déboguer. On notera que de nombreuses autres fonctions peuvent être comprises dans le debogueur 127, mais ne sont pas représentées ici pour simplifier l'explication. Les figures 4 à 9 concernent les étapes exécutées par le débogueur 127 au cours débogage du programme 125. La méthode 400 représentée la figure 4 est une méthode appliquée par l'interface utilisateur 310 de la figure 3. L'interface utilisateur attend un événement (étape 410). De nombreux événements peuvent etre définis dans un débogueur, y compris un événement "Définir un point d'interruption" ou un événement "Aller à", entre autres. Si l'événement est un événement "Définir un point d'interruption" (étape 420 = OUI), l'interface utilisateur 310 envoie une commande de point d'interruption à l'évaluateur d'expressions 320. Si l'événement n'est pas événement "Définir un point d'interruption" (étape 420 = NON), la méthode 400 vérifie si l'événement est un événement "Aller à" (étape 440). Si c'est le cas (étape 440 = OUI), 'interface utilisateur 310 envoie une commande "Aller à" à l'évaluateur d'expressions 320. Si l'événement n'est pas un événement "Aller à " (étape 440 = NON), l'interface utilisateur exécute les fonctions appropriées pour traiter les autres événements définis (étape 460) . Lorsque l'évaluateur d'expressions 320 reçoit une commande, telle qu'une commande de point d'interruption dans l'étape 430 ou une commande "Aller à" dans l'étape 450, il exécute les étapes de la méthode 500 représentée sur la figure 5. D'abord, l'entrée est analysée (étape 510) pour déterminer la commande spécifiée. Si l'entrée est une commande "Définir un point d'interruption" (étape 520 = OUI), telle que celle émise dans l'étape 430 de la figure 4, une commande "Définir un point d'interruption" est envoyée au gestionnaire de points d'interruption 330 (étape 530), et la méthode 500 sort (étape 540). Si l'entrée n'est pas une commande "Définir un point d'interruption" (étape 520 = NON), la méthode 500 vérifie si entrée est une commande "Aller à" (étape 550 . Si c'est le (étape 550 = OUI), la méthode 500 envoie une commande "Aller à" au gestionnaire de points d'interruption 330 (étape 560), puis sort (étape 540). Si l'événement n'est pas une commande "Aller à (étape 550 = NON), l'évaluateur d'expressions effectue l'opération appropriée pour traiter l'entrée comme une autre commande ou expression de débogage (étape 570), puis sort (étape 540). Sur la figure 6, la méthode 600 montre étapes qui sont exécutées par le gestionnaire de points d'interruption lorsqu'une commande "Définir un point d'interruption" est reçue, comme dans l'étape 530 de la figure 5. D'abord, le code op du programme est remplacé par une instruction qui génère une exception, telle qu'une instruction "Piéger" (étape 6l0). Un article est alors ajouté dans une table de points d'interruption (étape 620); il contient les informations suivantes l'adresse du point d'interruption, le code op original, le fait que le point d'interruption est un point d'interruption normal ou un point d'interruption "Aller à", et le rang du point d'interruption. On notera que cette configuration particulière implique que les points d'interruption normaux et les points d'interruption "Aller à" sont mémorisés dans la même table de points d'interruption. Bien entendu, on pourrait utiliser des tables différentes pour les deux types de points d'interruption. Une fois que l'article est ajouté dans la table de points d'interruption dans l'étape 620, la méthode 600 sort vers l'interface utilisateur (étape 630) pour permettre à l'utilisateur de définir d'autres points d'interruption ou d'effectuer une autre opération. Sur la figure 7, la méthode 700 montre les étapes sont exécutees par le gestionnaire de points d'interruption 330 lorsqu' commande "Aller à " est reçue, comme dans l'étape 550 de la figure 5. D'abord, le code op du programme est remplace par une instruction qui génère une exception, telle qu' instruction "Piéger" (étape 710). Un article alors ajouté dans une table de points d'interruption (étape 720), comme dans l'étape 620 de la figure 6. Une fois que l'article est ajouté dans la table de points d'interruption dans l'étape 720, le drapeau global d'opération "Aller à" est mis sur VRAI (étape 730), et la méthode 700 exécute le programme (étape 740). Le drapeau global d'opération "Aller à" est un drapeau qui est activé lorsqu'il existe un point d'interruption "Aller à" et désactivé lorsqu'il n'en existe pas. Ce drapeau global permet d'identifier facilement s'il existe ou non un point d'interruption "Aller à" sans contrôler individuellement chaque point d'interruption. Une configuration appropriée de la table de points d'interruption mentionnée dans les figures 6 et 7 est représentée sur la figure 8. La table de points d'interruption 800 comprend plusieurs articles (p. ex., 810A, 810B et 81 qui ont chacun un champ d'adresse 820, un champ de code 830, un champ de drapeau "Aller à" 840 et un drapeau de rang 850. Le champ d'adresse 820 indique l'adresse du point d'interruption dans le programme informatique 125. Le champ code op 830 contient le code op original du programme 125 qui a été remplacé par une instruction "Piéger" ou autre générant une exception. Le champ du drapeau "aller à" 840 contient un drapeau qui indique si le point d'interruption est un point d'interruption "Aller à" ou non. Si le drapeau "Aller à" est activé (mis à un), le point d'interruption est un point d'interruption "Aller à". Si le drapeau "Aller à" est désactivé (mis à zéro), le point d'interruption n'est pas un point d'interruption "Aller à". Dans cet exemple, nous admettons qu'il n'existe que deux types de points d'interruption, les points d'interruption normaux et les points d'interruption "Aller à". Le champ de rang 850 contient un rang pour le point d'interruption qui sert ' déterminer si l'exécution du programme 125 doit être interrompue ou non lorsqu'un point d'interruption est rencontré. la figure 9, la méthode 900 est lancée par le gestionnaire de points d'interruption 330 lorsqu'un point d'interruption est rencontré pendant l'exécution du programme informatique 125 (étape 910). D'abord, le gestionnaire de points 'interruption 330 doit déterminer 1 article de la table points d'interruption qui correspond au point d'interruption courant. Une manière appropriée de localiser l'article correspondant dans la table est de comparer le champ d'adresse 820 du premier article de la table avec l'adresse du point interruption courant. Si les deux ne coincident pas, le champ d'adresse de l'article suivant de la table est comparé avec l'adresse du point d'interruption courant. Ce processus se poursuit jusqu'à ce que l'article de la table de points d'interruption 800 qui correspond au point d'interruption courant soit identifié dans l'étape 920. Ensuite, le gestionnaire de points d'interruption 330 détermine si le drapeau d'opération "Aller à" est mis sur VRAI (étape 930). Si le drapeau d'opération "Aller à" n'est pas mis sur VRAI (étape 930 = NON), cela signifie qu'il n'y a pas de point d'interruption "Aller à" dans la table de points d'interruption 800; on sait alors que le point d'interruption courant est un point d'interruption normal. L'interface utilisateur est ensuite appelée (étape 960) pour fournir à l'utilisateur une sortie concernant l'état du programme 125 au point d'interruption. Si l'utilisateur veut reprendre l'exécution du programme, il sort de l'interface utilisateur et le gestionnaire de points d'interruption 330 émule le code op original (étape 970) spécifié dans le champ de code op 830 de l'article du point d'interruption courant, et reprend l'exécution du programme 125 (étape 980). Si le drapeau d'opération "Aller à" est mis sur VRAI (étape 930), cela signifie qu'il y a un point d'interruption "Aller à" dans la table de points d'interruption, et donc que le gestionnaire de points d'interruption 330 doit déterminer comment traiter le point d'interruption courant. abord, le champ "Aller à" 840 de l'article du point d'interruption courant est examiné pour déterminer si le point d'interruption courant est un point d'interruption "Aller à" (étape 940). Si le point d'interruption courant est un point d'interruption "Aller à" (étape 940 = OUI), ce point d'interruption "Aller à" est effacé de la table de points d'interruption (étape 942) et le drapeau d'opération "Aller à" est désactivé (étape 944). Le point d'interruption "Aller à" a alors bien été rencontré, et l'interface utilisateur est appelée (étape 960) pour afficher l'état du programme informatique au point d'interruption "Aller à". Lorsque l'utilisateur, après avoir examiné l'état du programme dans l'interface utilisateur, veut reprendre l'exécution du programme, le code op original est emulé (étape 970) et l'exécution du programme reprend (étape 980). On notera que l'entrée de la table de points d'interruption 800 correspondant au point d'interruption "Aller à" a été effacée au cours de l'étape 942, de sorte que l'étape nécessite que la valeur contenue dans le champ de code 830 soit conservee pour pouvoir l'émuler plus tard. Si le point d'interruption courant n'est un point d'interruption "Aller à" (étape 940 = NON), le gestionnaire de points interruption sait que le point d'interruption courant est point d'interruption normal. Une caractéristique importante de la présente invention est le fait le point d'interruption courant n'interrompt pas nécessairement la fonction "Aller à". La méthode 900 utilise la valeur enregistrée dans le champ de rang 850 du point d'interruption courant pour déterminer s'il faut interrompre ou non la fonction "Aller à". Si le rang du point d'interruption courant est supérieur à celui du point d'interruption "Aller à" (étape 950 = OUI), il faut arrêter le programme à ce point d'interruption et annuler la fonction "Aller à". Le point d'interruption "Aller à" est alors effacé de la table de points d'interruption (étape 942), le drapeau d'opération "Aller a" est désactivé (étape 944) et l'interface utilisateur est appelée (étape 960) pour afficher l'état du programme informatique lorsque le point d'interruption courant été rencontré. Lorsque l'utilisateur, après avoir examiné le point d'interruption dans l'interface utilisateur, veut reprendre l'exécution du programme, le gestionnaire de points d'interruption émule le code op original du point d'interruption courant (étape 970) et l'exécution du programme reprend (étape 980). Lors de l'étape 950, si le rang du point d'interruption courant est inférieur ou égal à celui du point d'interruption "Aller à" mentionné dans la table de points d'interruption (étape = NON), le point d'interruption courant est ignoré, le code original du point d'interruption courant est émulé (étape 970) et l'exécution du programme reprend (étape 980) comme si le point d'interruption n'avait pas été exécuté. Un exemple typique de programme informatique et la manière dont les points d'interruption classés offrent une méthode de débogage évoluée est représenté sur les figures 10 à 13. La figure 10 donne un exemple de programme en code source. Ce programme affecte simplement quatre valeurs intégrales différentes à une variable intégrale Ce programme n'exécute aucun calcul ou fonction utile, mais il est suffisant pour illustrer les concepts de la présente invention. Le code source de la figure 10 est compilé en un code objet représenté sur la figure 11. On notera que la figure 11 contient en fait pour chaque adresse deux représentations différentes d'un programme informatique compilé, un code objet dans la colonne Code op, et les instructions correspondantes au niveau machine dans la colonne Code assembleur. On notera aussi que les labels 1, 2, 3 et 4 sont indiqués pour permettre au lecteur de se reporter aux instructions indiquées les figures 11 à 13. Chaque instruction code source de la figure 10 est compilée en deux instructions machine correspondantes sur la figure 11. Les instructions du label 1 comprennent une instruction d'ajout immediat (ADDI) qui spécifie un registre (R12), un décalage (0) la valeur (1) à ajouter au registre spécifié. On suppose ' que tous les registres machine sont mis à zéro avant que le code de la figure 11 soit exécuté, de sorte que l'ajout de aboutit à la présence d'un 1 dans R12. Une fois l'instruction ADDI exécutée, une instruction de stockage de mot (STW) est exécutée pour enregistrer le contenu du registre 12 dans un emplacement de la mémoire qui correspond à la variable xx. L'adresse de l'emplacement mémoire est calculée en ajoutant la valeur FFEO au contenu du registre 31 (indiqué entre parenthèses après l'instruction). On notera que la valeur OX précédant la valeur FFEO des instructions STW sur la figure 11 indique qu'il s'agit d'une adresse hexadécimale. Chacune des instructions d'affectation de variable de la figure 10 est obtenue en ajoutant une valeur intégrale au contenu registre qui est mis à zéro, puis en enregistrant le registre dans l'emplacement mémoire correspondant à la variable. Les instructions la figure 11 peuvent maintenant être utilisées pour fournir une illustration très simple de l'utilisation des points d'interruption classés selon les versions préférentielles. Sur la figure 12, on peut placer un point d'interruption unique dans le programme en remplaçant l'instruction ADDI du label 3 par une instruction "Piéger", de sorte que le code op passe de 39 pour une instruction ADDI à 3F pour une instruction "Piéger". Bien entendu, le code op original de cette instruction, ainsi que l'adresse correspondante de l'instruction dans le programme informatique et le rang du point d'interruption, sont enregistrés dans l'article 810C de la table de points d'interruption 800. suppose que le point d'interruption de la figure 12 est point d'interruption normal, et non un point d'interruption "Aller à", de sorte que son drapeau "Aller à" dans la table de points d'interruption est mis sur FAUX. On suppose aussi que le programme informatique de la figure 12 est exécuté maintenant. Les instructions des labels 1 et 2 sont exécutées puis l'instruction "Piéger" du label 3 est exécutée. Cette instruction "Piéger" provoque une exception, de sorte que gestionnaire de points d'interruption prend le contrôle pour exécuter la méthode 900 de la figure 9. Les points d'interruption enregistrés dans la table de points d'interruption 800 sont d'abord examinés pour déterminer l'article qui correspond au point d'interruption qui vient d'être exécute. Le programme simple représenté sur la figure 12 comprend seul point d'interruption, de sorte que la table de points d'interruption 800 se résume à un simple article 810C doté d'une adresse 00000470 qui correspond à l'adresse l'instruction qui a généré le point d'interruption. L'étape 920 de la figure 9 identifie alors l'article 8 qui correspond au point d'interruption. Dans l'exemple simple de la figure 12, l'unique point d'interruption n'est pas un point d'interruption "Aller (comme l'indique le fait que le drapeau "Aller à" de l'article 810C soit a zéro), de sorte que le drapeau de l'opération "Aller à" est mis sur FAUX (étape 930 = NON). L'interface utilisateur est alors appelée (étape 960) pour permettre a l'utilisateur de visualiser l'état du programme lors de la rencontre du point d'interruption du label 3. Lorsque l'utilisateur, après avoir examiné l'état du programme dans l'interface utilisateur, veut reprendre l'exécution du programme, le code op original enregistré dans le champ Code op 830 de l'article 810C est émulé (étape 970) et l'exécution du programme reprend (étape 980). Un cas plus intéressant illustrant 'intérêt du classement des points d'interruption est donné la figure 13. Sur figure 13, deux points d'interruption ont été définis, point d'interruption normal doté d'un rang 10 dans le label utilisant la méthode 600 de la figure 6, et un point d'interruption "Aller à" doté d'un rang 10 dans le label 4 utilisant la méthode 700 de la figure 7 Ces points d'interruption constituent respectivement les articles 810A et 810B de table de points d'interruption . Lorsque le programme de la figure 13 est exécuté, la première instruction est une instruction "Piéger" qui génère une exception et donne le contrôle au gestionnaire de points d'interruption. Comme indiqué sur la figure 9, le gestionnaire de points d'interruption détermine d'abord l'article de la table de points d'interruption qui correspond au point d'interruption courant (étape 920). Les adresses des articles de point d'interruption 810A et 810B sont examinées, et l'étape 920 détermine que l'adresse de l'article 810A correspond à l'adresse du point d'interruption courant. Lors de l'étape 930, le gestionnaire de points d'interruption constate que le drapeau d'opération "Aller à" est sur VRAI (car l'étape 730 a été exécutée en définissant le point d'interruption "Aller à" dans le label 4). Le point d'interruption courant du label 1 n'est pas un point d'interruption "Aller à", comme l'indique le fait que le drapeau "Aller à" de l'article 810A est sur zéro, de sorte que la réponse à l'étape 940 est NON. Ensuite, l'étape 950 détermine si le rang du point d'interruption courant est supérieur à celui du point d'interruption "Aller à". Le rang du point d'interruption courant est de 10, comme indiqué dans le champ de rang 850 de l'article 810A. Le rang du point d'interruption "Aller à" est de 10, comme indiqué dans le champ de rang 850 de l'article 810B. Ainsi, la réponse à l'étape 950 est NON, de sorte que le gestionnaire de points d'interruption émule le code op original figurant dans le champ Code op de l'article 810A (étape 970), et l'exécution du programme reprend (étape 980). Le code op original étant émulé et 1 exécution du programme reprenant, le point d'interruption est ignoré. Lorsque le point d'interruption suivant est rencontre lors de l'exécution de l'instruction "Piéger" du label 4, exception est générée et le contrôle est à nouveau donné au gestionnaire de points d'interruption pour appliquer la méthode 900. L'étape 920 détermine à partir de l'adresse du point d'interruption courant que l'article 810B de la table de points d'interruption 800 correspond au point d'interruption courant. Le champ de drapeau "Aller à" est toujours mis sur VRAI (étape 930 = OUI). L'étape 940 détermine à partir du champ de drapeau "Aller à" de l'article 810B que le point d'interruption courant est un point d'interruption "Aller à". De fait, l'article 810B du point d'interruption "Aller à" est effacé de la table de points (étape 942), Le drapeau d'operation "Aller à" est mis sur FAUX (étape 944) et l'interface utilisateur est appelée pour afficher l'état du programme informatique. Cette suite d'étapes indique que le point d'interruption "Aller à" a bien été rencontré. On notera que l'utilisateur, après avoir examiné l'état du programme dans l'interface utilisateur, peut reprendre l'exécution du programme, de sorte que le gestionnaire de points d'interruption émule le code op original (étape 970) l'execution du programme reprend (étape 980). Le rang du point d'interruption du label 1 de la figure 13 étant identique à celui du point d'interruption "Aller du label 4, le point d'interruption normal du label 1 est ignoré lorsque la fonction "Aller à" est activée par l'utilisateur en cliquant sur l'instruction ADDI du label 4. Cependant, on peut obtenir un résultat différent en définissant de manière appropriée le rang de chaque point d'interruption et le rang du point d'interruption "Aller à". Pour cet exemple particulier, nous admettons qu'un rang par défaut de 10 est attribué à tous les points d'interruption, y compris les points d'interruption "Aller à". Cela implique que tous les points d'interruption dotés du rang par défaut sont ignorés lorsqu'un point interruption "Aller à" est défini. Toutefois, n'importe quel point d'interruption peut être doté d'un rang supérieur ou inférieur au rang par défaut. Par exemple, si le point d'interruption du label 1 de la figure 13 était un point d'interruption important, son rang pourrait être réglé sur 15. Si était le cas, lors de la rencontre du premier point d'interruption d label 1, le gestionnaire de points d'interruption appliquant la méthode 900 déterminerait que le point d'interruption courant n'est pas un point d'interruption "Aller ' (étape 940 = NON), et que le rang du point d'interruption courant (15) est supérieur à celui du point d'interruption "Aller à" (10) (étape 950 = OUI), de sorte que le point d'interruption "Aller à" serait effacé de la table de points interruption lors de l'étape 942, le drapeau d'opération "Aller à" serait mis sur FAUX (étape 944) et l'interface utilisateur serait appelée (étape 960) pour afficher le résultat du point d'interruption courant. Ainsi, un point d'interruption de rang élevé peut éliminer une fonction "Aller à" de rang inférieur. Une autre manière pour sélectionner les points d'interruption à ignorer ou à exécuter consiste à définir le rang du point d'interruption "Aller à". Par exemple, supposons plusieurs points d'interruption normaux sont établis avec un rang par défaut de 10. Si l'utilisateur désire interrompre le programme à chaque point d'interruption, il peut spécifier un point d'interruption "Aller à" avec un rang 5, ce qui provoquera l'arrêt de la fonction "Aller à" au premier point d'interruption doté d'un rang supérieur à 5. Si l'utilisateur désire interrompre le programme aux points d'interruption dotés d'un rang supérieur au rang par défaut, il peut régler le rang du point d'interruption "Aller à" sur la valeur par défaut, ce qui provoquera l'arrêt de la fonction au premier point d'interruption doté d'un rang supérieur. Si l'utilisateur utilise des points d'interruption de rangs différents, il peut choisir le rang du point d'interruption "Aller à" de manière à rencontrer ou éviter des groupes de points d'interruption d'un rang donné. On notera que, pour illustrer le propos, le schéma d'étapes de la figure 9 suppose que la rencontre d'un point d'interruption doté d'un rang supérieur pendant l'exécution de la fonction "Aller à" provoque l'arrêt de celle (voir étapes et 944). Cependant, il entre également dans l'objet des versions préférentielles que cette rencontre provoque la suspension de la fonction "Aller à", l'évaluation point d'interruption de haut rang, puis la reprise de la fonction "Aller La présente présentation décrit l'utilisation points d'interruption classés lors de l'exécution d' fonction "Aller Cependant, le classement des points d'interruption peut être utilisé pour d'autres fonctions de débogage que la fonction "Aller à". Par exemple, supposons qu'un utilisateur définisse plusieurs points d'interruption de rang 5, plusieurs de rang , plusieurs de rang 15 et plusieurs de rang 20. I1 pourrait alors activer une fonction de "point d'interruption conditionnel" en spécifiant un rang-seuil qui permettrait d'ignorer les points d'interruption de rang inférieur ou égal et d'arreter le programme uniquement aux points d'interruption de rang supérieur. Les versions préférentielles supposent que seuls les points 'interruption de rang supérieur seront exécutés, tandis que les points d'interruption de rang inférieur ou égal au rang spécifié seront ignorés Toutefois, ce mode de relation entre les rangs n'est donné qu'à titre d'illustration et ne doit pas être considéré comme limitatif. On pourrait tout aussi facilement décider que les points d'interruption de rang supérieur ou égal au rang spécifié seront exécutés, tandis que les points d'interruption de rang inférieur seront ignorés. En outre, on pourrait utiliser n'importe quelle heuristique appropriée pour déterminer quand un rang est suffisant ou non pour provoquer l'exécution d' point d'interruption. Les spécialistes comprendront que de nombreuses variantes sont possibles dans le cadre de la présente invention. C'est pourquoi, bien que l'invention ait été plus particulièrement illustrée et décrite en référent à ses versions préférentielles, les spécialistes comprendront que ces modifications de forme et de détails, entre autres, peuvent être réalisées sans trahir 1 intention ni l'objet de la présente invention. REVENDICATIONS 1. dispositif comprenant les éléments suivants moins un processeur, une mémoire couplée à ce(s) processeur (s), un programme informatique résidant dans la mémoire, et moins un point d'interruption classé dans le programme informatique, un débogueur déterminant si l'exécution du programme informatique doit être arrêtée lorsqu'un premier point d'interruption classé est rencontré au cours de l'exécution du programme informatique, en comparant le rang premier point d'interruption classé avec un rang-seuil préétabli. 2. dispositif décrit dans la revendication 1, caractérise par fait que le rang-seuil préétabli est le rang d' second point d'interruption classé sélectionné par un utilisateur. 3. dispositif décrit dans la revendication 2, caractérise par le fait que le second point d'interruption classé comprend un point d'interruption "Aller à". 4. Le dispositif décrit dans la revendication 1, caractérise par fait que le débogueur arrête l'exécution du programme informatique si le rang du premier point d'interruption classé est supérieur au rang-seuil prédéfini. 5. méthode pour déboguer un programme informatique, comprenant les étapes suivantes (1) définition d'un premier point d'interruption classe dans le programme informatique, (2) spécification d'un rang-seuil, (3) exécution du programme informatique, et (4) interruption de l'exécution du programme informatique au premier point d'interruption classé uniquement si celui est doté d' rang possédant une relation numérique prédéfinie avec le rang seuil. 6. La méthode décrite dans la revendication 5, caractérisee par le fait que l'étape de spécification du rang-seuil comprend 1 étape de définition d'un second point d'interruption classé doté d'un rang égal au rang-seuil. 7. La méthode décrite dans la revendication 6, caractérisee par le fait que le second point d'interruption classé comprend un point d'interruption "Aller à". 8. La méthode décrite dans la revendication 5, caractérisée par le fait l'étape (2) comprend les étapes suivantes (2A) sélection d'une instruction dans le programme informatique, (2B) définition d'une fonction "Aller à" avec rang-seuil pour l'instruction sélectionnée, et (2C) lancement de la fonction "Aller à" pour commencer l'exécution du programme informatique dans l'étape (3). 9. La méthode décrite dans la revendication 5, caractérisée par le fait que l'étape (2B) comprend les étapes suivantes (2B1) spécification du rang-seuil de la fonction "Aller à", et (2B2) définition d'un point d'interruption "Aller à" pour l'instruction sélectionnée en enregistrant cette dernière en la remplaçant par une instruction générant un point d'interruption. 10. La méthode décrite dans la revendication 5, caractérisee par le fait que l'étape (4) interrompt l'exécution du programme informatique si le rang du premier point d'interruption classé est supérieur au rang-seuil prédéfini. 11. produit logiciel comprenant les éléments suivants mécanisme de débogage qui définit au moins un point d'interruption doté d'un rang dans un programme informatique, ce debogueur déterminant si l'exécution du programme informatique doit être arrêtée lorsqu'un premier point d'interruption classé est rencontré au cours de l'exécution du programme informatique, en comparant le rang du premier point d'interruption classé avec un rang-seuil prédéfini, et support de signaux supportant le mécanisme de débogage. 12. Le produit logiciel décrit dans la revendication 11, caractérisé par le fait que le support de signaux comprend un support enregistrable. 13. Le produit logiciel décrit dans la revendication caractérisé par le fait que le support de signaux comprend support de transmission. 14. Le produit logiciel décrit dans la revendication 1 caractérisé par le fait que le rang-seuil prédéfini est le rang d'un second point d'interruption classé sélectionné par un utilisateur du mécanisme de débogage. 15. Le produit logiciel décrit dans la revendication caractérisé par le fait que le second point d'interruption classé comprend un point d'interruption "Aller à". 16. Le produit logiciel décrit dans la revendication caractérisé par le fait que le débogueur arrête l'exécution du programme informatique si le rang du premier point d'interruption classé est supérieur au rang-seuil prédéfini.