Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 2 — Interfaces, processus et Linux

11. Compilation, signaux et débogage

LECTURE 13 / 184 repèresSynthèse avec omissions acceptées

11. Compilation, signaux et débogage

11.1 Source, objet et exécutable

Un fichier .c doit être traduit :

  1. cc -c hello.c produit le fichier objet hello.o;
  2. l'édition de liens combine objets et bibliothèques;
  3. cc -o hello hello.c peut enchaîner compilation et liaison;
  4. ./hello exécute le programme du répertoire courant.

Le fichier objet contient du code compilé, mais n'est pas nécessairement un exécutable autonome. La compilation séparée devient utile lorsque plusieurs sources composent le programme.

11.2 Signaux

La commande kill envoie un signal; elle ne signifie pas nécessairement « tuer » :

  • SIGSTOP suspend et ne peut pas être ignoré;
  • SIGCONT reprend;
  • SIGINT correspond généralement à la demande produite par Ctrl+C;
  • SIGTERM demande une fin propre;
  • SIGKILL force la terminaison.

Un programme en boucle infinie fournit une cible observable : on trouve son PID avec ps, on l'arrête, le reprend, puis le termine depuis un autre terminal.

11.3 Récursion, pile et core dump

Une fonction récursive sans cas d'arrêt ajoute des cadres jusqu'à épuiser la pile. Une pile plus petite ou une trame plus grande réduit le nombre d'appels possibles. Les nombres mesurés dépendent de l'architecture, du compilateur, des options et de l'environnement; ils ne sont pas universels.

Le laboratoire emploie :

  • ulimit -a pour consulter les limites;
  • ulimit -s 1024 pour réduire la pile dans le shell courant;
  • ulimit -c unlimited pour autoriser les vidages mémoire;
  • une compilation avec -g pour conserver les informations de débogage;
  • gdb programme core pour examiner l'état au moment de l'échec.

Cette expérience relie directement les cadres de pile théoriques à une faute observable.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.