# Manuel de Nemiver

## Aperçu

Nemiver est une tentative d'écriture d'un débogueur indépendant avec interface graphique, s'intégrant bien dans l'environnement de bureau GNOME. Il se fonde sur l'utilisation en arrière-plan du débogueur GNU bien connu gdb pour déboguer des programmes en C / C++.

### Perspectives

Nemiver est conçu comme une boîte à outils graphique générique et un système de greffons qui ouvrent diverses perspectives. Actuellement la seule perspective offerte est le débogage, mais dans le futur, seront ajoutées des perspectives de débogage mémoire avec valgrind ou de profilage avec des outils tels que oprofile.

## Premiers pas

Ce paragraphe explique comment lancer Nemiver ; il donne également un aperçu des fondements de l'application.

### Lancement de Nemiver

Vous pouvez lancer Nemiver de la manière suivante :

Menu Applications

- Choisissez Programmation Débogueur Nemiver.

En ligne de commande

- Saisissez `nemiver`, puis appuyez sur la touche Entrée.

  #### Options supplémentaires en ligne de commande

  La liste des options pouvant être passées à Nemiver en ligne de commande s'affiche en saisissant `nemiver --help-all`.

### Fenêtre de Nemiver

Quand vous lancez Nemiver, une fenêtre ressemblant beaucoup à la suivante apparaît :

#### Fenêtre Nemiver

Fenêtre principale de Nemiver

La fenêtre Nemiver comporte les éléments suivants :

Barre de menu

- Les menus de la barre de menus comportent la totalité des commandes nécessaires à l'utilisation de Nemiver.

Barre d'outils

- La barre d'outils affiche les actions élémentaires de débogage pour le lancement ou l'exécution pas à pas du programme à déboguer.

Bloc-notes d'affichage du source

- Quand des fichiers source sont ouverts, cette zone sert à l'affichage des sources du programme en cours de débogage.

Bloc-notes d'état

- Le bloc notes d'état comporte plusieurs onglets pour afficher les informations relatives au programme en cours de débogage. Ces onglets sont les suivants :

  Pile d'appel

- Affiche l'état courant de la pile d'appel du programme en cours de débogage.

Variables

- Affiche une liste de toutes les variables locales et paramètres de fonction, ainsi que leurs types et leurs valeurs.

Terminal de la cible

- Si le programme en cours de débogage écrit une quelconque sortie sur le terminal, elle est affichée dans cet onglet.

Points d'arrêt

- Cet onglet affiche la liste de tous les points d'arrêt définis. Vous visualisez le code source d'un point d'arrêt donné en double cliquant sur un élément de la liste ou bien en choisissant Aller dans le source dans le menu contextuel affiché par un clic droit du bouton de souris. De plus, les points d'arrêt de cet onglet peuvent être détruits, activés ou désactivés. Pour plus d'informations concernant les points d'arrêt, consultez la nemiver-sect-breakpoints.

Registres

- Cet onglet affiche tous les registres processeur et leurs valeurs. Pour plus de détails, consultez la nemiver-sect-registers.

Mémoire

- Cet onglet donne l'état présent d'une zone de mémoire donnée. Pour plus d'informations, consultez la nemiver-sect-memory.

### Choix d'un programme à déboguer

Il y a plusieurs manières de débuter le débogage d'un programme. Nemiver permet le chargement d'un exécutable local, d'un fichier « core », la connexion à un processus en cours ou à un serveur de débogage distant.

#### Débogage d'un exécutable

##### Utilisation de la boîte à outils

Pour sélectionner un exécutable à déboguer, choisissez Fichier Charger le fichier exécutable... qui affiche la boîte de dialogue suivante :

###### Boîte de dialogue pour exécutable

Boîte de dialogue pour sélectionner un exécutable à lancer

Dans cette boîte de dialogue, vous pouvez sélectionner le programme à déboguer, tous paramètres ou toutes options à transmettre à l'exécutable via sa ligne de commande, le répertoire de travail dans lequel l'exécutable sera lancé et l'ensemble des variables d'environnement à définir lors du débogage.

##### Utilisation de la ligne de commande

Pour lancer un exécutable à déboguer à partir de la ligne de commande, indiquez simplement le nom de l'exécutable. Précisez, soit le chemin complet vers l'exécutable, soit uniquement son nom de base si vous vous trouvez dans son répertoire. Par exemple, si votre chemin est `/usr/bin`, les deux syntaxes suivantes sont équivalentes :

- `nemiver /usr/bin/nomprog`

- `nemiver nomprog`

###### Passage d'options par la ligne de commande

Si vous voulez transmettre au programme à déboguer des options via la ligne de commande, vous devez les saisir entre guillemets pour prévenir une interprétation immédiate par Nemiver : `nemiver "nomprog --arg1 --arg2"`.

#### Connexion à un programme en cours d'exécution

##### Utilisation de la boîte à outils

Choisissez l'élément de menu Fichier Se connecter à un processus en cours... qui affiche la boîte de dialogue suivante :

###### Boîte de dialogue de connexion

Boîte de dialogue pour se connecter à un programme en cours d'exécution

Choisissez un processus dans la liste et cliquez sur Valider pour débuter le débogage du programme choisi. La liste affichée dans la boîte de dialogue peut comporter de très nombreux d'éléments, vous pouvez filtrer ceux qui vous intéressent en saisissant du texte dans le contrôle de saisie situé immédiatement sous la liste.

##### Utilisation de la ligne de commande

Pour se connecter à un processus en cours à partir de la ligne de commande, servez-vous de l'option `--attach`. Elle accepte, soit le numéro d'identification du processus (pid), soit son nom. Ainsi, par exemple, pour déboguer le processus en cours `foo` possédant le numéro 1121, vous saisissez soit `nemiver --attach foo`, soit `nemiver --attach 1121`.

#### Chargement d'un fichier « core »

##### Utilisation de la boîte à outils

Choisissez l'élément de menu Fichier Charger un fichier core... pour faire apparaître la boîte de dialogue suivante qui vous permet de charger un fichier core :

###### Boîte de dialogue de chargement d'un fichier core

Boîte de dialogue pour le chargement d'un fichier core.

##### Utilisation de la ligne de commande

Les fichiers core ne peuvent pas être chargés à partir de la ligne de commande.

#### Débogage distant

Nemiver permet une connexion pour un débogage sur un serveur distant.

##### Utilisation de la boîte à outils

Pour se connecter à un serveur distant en vue d'un débogage, choisissez Fichier Se connecter à une cible distante...

Boîte de dialogue pour débogage à distance

Choisissez l'exécutable à charger et indiquez l'endroit où se trouvent les bibliothèques partagées. Saisissez ensuite les informations détaillées pour vous connecter à distance.

##### Utilisation de la ligne de commande

Nemiver ne dispose d'aucun moyen pour se connecter à un serveur distant à partir de la ligne de commande

## Utilisation de Nemiver

Ce paragraphe décrit comment utiliser Nemiver pour déboguer une application.

### Actions élémentaires de débogage

Les actions élémentaires de débogage sont accessibles soit à partir de la barre d'outils principale, soit à l'aide du menu Déboguer, soit avec des raccourcis clavier. Les actions les plus courantes sont listées ci-après :

Continuer

- Démarre le programme. L'exécution se poursuit jusqu'à la rencontre d'un point d'arrêt ou jusqu'à la fin du programme. Vous pouvez l'interrompre « à la main » en cliquant sur le bouton Arrêter. Le démarrage peut être activé en appuyant sur la touche F5.

Suivante

- Exécute l'instruction suivante et s'arrête sur la ligne immédiatement après dans le fichier. Certains débogueurs appellent cette action « Avancer ». Elle peut être activée en appuyant sur la touche F6.

Pas à pas

- Exécute l'instruction suivante en entrant dans la fonction si c'est possible. Certains débogueurs appellent cette action « Entrer ». Elle peut être activée en appuyant sur la touche F7.

Sortir

- Termine l'exécution de la fonction en cours et s'arrête au point de retour de son appel. Cette action peut être activée en appuyant sur les touches Maj F7.

Redémarrer

- Recharge l'exécutable en cours de traitement et redémarre son exécution depuis le début. Cette action peut être activée en appuyant sur les touches Maj F5.

Arrêter

- Arrête manuellement le déroulement du programme. Cette action n'est disponible que lorsque le débogueur est en train de déboguer l'exécutable (c'est-à-dire après que l'utilisateur a cliqué sur Continuer). Cette action peut être activée en appuyant sur la touche F9.

Par défaut, après avoir chargé un exécutable, Nemiver crée un point d'arrêt à l'entrée de la fonction `main()`. Ainsi dès que l'exécution atteint ce point, elle s'arrête et attend une commande. Vous pouvez ensuite parcourir pas à pas le programme, examiner les variables (consultez la nemiver-sect-inspecting-variables) ou ajouter des points d'arrêt supplémentaires (consultez la nemiver-sect-breakpoints).

### Examen des variables

Nemiver affiche une liste de toutes les variables locales dans l'onglet Variables du Bloc-notes d'état. Si vous voulez examiner une autre variable (ou même une expression quelconque), servez-vous de l'élément de menu Déboguer Examiner une variable qui fait apparaître une fenêtre semblable à celle-ci :

Boîte de dialogue d'examen de variables

Vous pouvez indiquer dans le contrôle de saisie tout nom de variable ou toute expression simple (comme `pFoo->bar`). Si cette variable est valide et à portée de vue, des informations détaillées la concernant seront affichées.

D'une autre façon, si vous sélectionnez un nom de variable dans la fenêtre d'édition des sources puis faites apparaître la boîte de dialogue Examiner une variable, Nemiver essaie d'afficher des informations concernant cette variable.

#### Raccourci clavier

Vous ferez également apparaître la fenêtre Examiner une variable en appuyant sur la touche F12.

Nemiver vous permet également d'afficher la liste de toutes les variables globales d'une application dans une boîte de dialogue séparée. Pour faire apparaître la fenêtre Variables globales, choisissez l'élément de menu Déboguer Afficher les variables globales ou bien pressez Ctrl G.

Boîte de dialogue des variables globales

Pour certains programmes (plus spécialement les programmes en C++), l'affichage de la totalité des variables globales peut prendre beaucoup de temps.

### Définition des points d'arrêt

Il y a plusieurs méthodes pour définir des points d'arrêt dans Nemiver. Nemiver définit automatiquement un point d'arrêt à l'entrée de la fonction `main()` quand vous débutez le débogage d'un exécutable. Si vous voulez définir d'autres points d'arrêt, utilisez un des moyens ci-après :

- Cliquez dans la marge de la ligne sur laquelle vous voulez placer un point d'arrêt.

- Placez le curseur dans la ligne où vous voulez placer le point d'arrêt et définissez-le, soit via l'élément de menu Déboguer Définir un point d'arrêt, soit en appuyant sur la touche F8.

- Définissez un point d'arrêt en entrée d'une fonction particulière ou à un emplacement donné d'un fichier à l'aide du menu Déboguer Définir un point d'arrêt... ou bien en pressant Ctrl B. Cela fait apparaître une boîte de dialogue du type :

  Boîte de dialogue de définition d'un point d'arrêt

  Vous pouvez définir un point d'arrêt à un emplacement particulier du fichier ou bien via le nom d'une fonction. S'il y a plusieurs fonctions portant ce nom, Nemiver en affiche la liste et vous demande de choisir celle que vous souhaitez.

#### Désactivation de points d'arrêt

Les points d'arrêt peuvent être, soit activés, soit désactivés. Le débogueur arrête l'exécution quand il atteint un point d'arrêt activé mais il ignore tous ceux qui sont dans l'état désactivé. Cette fonctionnalité permet d'enlever un point d'arrêt sans réellement le détruire.

Pour activer ou désactiver un point d'arrêt, cliquez sur la case à cocher à côté du numéro du point d'arrêt dans l'onglet Points d'arrêt du Bloc notes d'état. Autrement, pressez Maj F8 pour activer ou désactiver le point d'arrêt situé dans la ligne de code possédant le curseur.

Les figures suivantes montrent la différence de représentation entre des points d'arrêt activés ou désactivés dans l'éditeur de sources.

Illustration d'un point d'arrêt activé

Point d'arrêt activé

Illustration d'un point d'arrêt désactivé

Point d'arrêt désactivé

#### Ouverture des fichiers source

Parfois, vous ne savez pas déterminer exactement le nom de la fonction ou le numéro de ligne à l'aplomb de laquelle placer un point d'arrêt. Il faut alors ouvrir le fichier source pour situer le point d'arrêt. Vous pouvez ouvrir arbitrairement des fichiers dans le système de fichiers, mais Nemiver fournit une liste des fichiers utilisés pour construire l'exécutable et vous permet d'en sélectionner un parmi ceux-ci. Si vous choisissez Fichier Ouvrir un fichier source..., la fenêtre suivante est affichée :

Boîte de dialogue pour ouvrir des fichiers source

Pour choisir un fichier arbitrairement dans le système de fichier, cliquez sur l'option Sélectionnez depuis le système de fichiers. Pour choisir parmi les fichiers ayant servis à créer l'exécutable, cliquez sur Sélectionnez depuis l'exécutable cible.

##### Détermination des fichiers source des modules chargés dynamiquement

Si l'exécutable cible charge des modules en cours d'exécution (par exemple, avec `dlopen()`), Nemiver ne sera pas capable de déterminer quels ont été les fichiers utilisés pour construire ces modules avant qu'ils n'aient été effectivement chargés.

### Débogage avancé

#### Registres

L'élément graphique d'édition des registres est situé dans l'onglet Registres du Bloc notes d'état. Pour aller directement dans cet onglet, pressez Alt F5.

L'élément graphique d'édition des registres

Cet élément graphique affiche les valeurs actuelles de tous les registres du processeur. Vous pouvez modifier les valeurs en cliquant dans la colonne Valeur et en saisissant une nouvelle valeur. Si la valeur du registre a été modifiée depuis le précédent arrêt du débogueur, elle est mise en évidence en rouge.

#### Mémoire

L'élément graphique mémoire permet d'afficher directement une partie de la mémoire, offrant ainsi une vue au plus bas niveau de ce qui se passe lors du déroulement du programme.

L'élément graphique d'édition mémoire

Pour afficher une portion de mémoire dans l'élément graphique mémoire, saisissez une adresse mémoire dans le champ Adresse. Si l'adresse est valide par rapport au programme en cours de débogage, une vue de la mémoire, débutant à l'adresse indiquée, est affichée. Les valeurs mémoire sont affichées sous les formats octet, mot (2 octets) ou mot long (4 octets) selon le choix opéré avec le menu déroulant Regrouper par. Les valeurs de la mémoire sont automatiquement mises à jour au fur et à mesure que vous avancez pas à pas dans le programme.

Outre l'affichage des valeurs en mémoire, cet élément graphique peut servir à les modifier. Vous pouvez modifier, soit la représentation hexadécimale (côté gauche), soit la représentation ASCII (côté droit). Les changements sont appliqués immédiatement.

## Enregistrement et restauration d'une session

Nemiver enregistre les sessions de débogage pour vous et vous permet de les reprendre ultérieurement. Les informations d'enregistrement comprennent le nom de l'exécutable en cours de débogage, les variables d'environnement définies, les options passées en ligne de commande, les fichiers ouverts et les points d'arrêt définis de manière à retrouver le plus rapidement possible la situation que vous aviez abandonnée la fois précédente.

### Enregistrement de sessions

Nemiver enregistre votre session automatiquement lorsque vous quittez. Vous n'avez pas à vous en soucier. Toutefois, si vous souhaitez explicitement enregistrer votre session avant la fermeture de Nemiver, choisissez l'élément de menu Fichier Enregistrer la session sur le disque.

### Reprise de sessions enregistrées

#### Utilisation de la boîte à outils

Choisissez Fichier Reprendre une session enregistrée... et sélectionnez une session dans la liste.

##### Boîte de dialogue Sessions

Boîte de dialogue pour reprendre une session enregistrée

#### À partir de la ligne de commande

Si vous connaissez le numéro d'identification de la session que vous voulez reprendre, vous pouvez redémarrer la session à partir de la ligne de commande. Par exemple, pour reprendre la session numéro 3, tapez la commande suivante : `nemiver --session 3`.

## À propos de Nemiver

Nemiver a été écrit par Dodji Seketeli et Jonathon Jongsma, avec de nombreuses autres contributions. Pour obtenir plus d'information à propos de Nemiver, consultez le site Web du projet Nemiver.

Pour signaler une anomalie ou émettre une suggestion concernant l'application ou le présent manuel, procédez comme indiqué à la section « Votre avis » du Guide utilisateur GNOME.

Ce programme est distribué selon les termes de la « GNU General Public license » telle que publiée par la Free Software Foundation ; soit la version 2 de la licence, soit, (à votre discrétion) toute version ultérieure. Une copie de la-dite licence est accessible ici ou bien dans le fichier COPYING joint au code source de ce programme.