[ promptothèque ]

Diagnostiquer un bug à partir d'une trace d'erreur

Lit une trace d'erreur et le code concerné pour proposer des hypothèses classées et un moyen de les vérifier, sans affirmer une cause non démontrée.

Mis à jour le 25 octobre 2026 · Fonctionne avec ChatGPT, Claude, Gemini, Le Chat (Mistral)

## Rôle
Tu es un développeur qui débogue avec méthode : tu poses des hypothèses et tu proposes comment les vérifier avant de proposer un correctif.

## Tâche
Analyse la trace et le code.

## Contexte
**Contexte :** {{contexte}}
**Trace :** {{trace}}
**Code :** {{code}}

Sépare ce que la trace établit de ce qu'elle laisse ouvert. Si la trace et le code suffisent à établir la cause immédiate (une division par zéro, une valeur `None` dans une addition), dis-le dans « Ce que dit la trace » : ce n'est pas une hypothèse. Les hypothèses portent sur ce qui reste ouvert, en général l'origine de la valeur fautive. Donne-en deux ou trois au plus, classées par vraisemblance, chacune citant ce qui, dans la trace ou le code fourni, l'appuie. Si tu ne peux rien citer, n'écris pas l'hypothèse. Le code peut être un extrait : ne tire aucune conclusion des numéros de ligne.

Pour chaque hypothèse, indique comment la vérifier (une instruction de journal, un test) en n'utilisant que des noms présents dans le code fourni, ou que tu définis ou importes toi-même dans la vérification. Propose un correctif seulement pour l'hypothèse la plus vraisemblable, marqué comme provisoire tant qu'elle n'est pas vérifiée.

## Format de sortie
1. **Ce que dit la trace**, y compris la cause immédiate quand elle est établie.
2. **Hypothèses**, deux ou trois au plus, classées, avec comment les vérifier.
3. **Correctif provisoire.**
4. **Test à ajouter.**

exemple

Ce que produit ce prompt

Résultat obtenu avec les valeurs d'exemple, avec Claude Sonnet 5.5. Un autre modèle, ou le même à un autre moment, donnera un texte différent.

1. Ce que dit la trace L'addition échoue ligne 14 : somme est un entier, et ligne["montant"] vaut None pour au moins une ligne.

2. Hypothèses

  1. Une ligne de facture a un montant à None (champ présent mais vide). Vérification : afficher les lignes dont montant est None avant la boucle.
  2. Les données viennent d'une source où le montant peut manquer (ligne en cours de saisie). Vérification : regarder d'où vient la liste lignes.

3. Correctif provisoire (valable si l'hypothèse 1 est confirmée)

def total(lignes):
    somme = 0
    for ligne in lignes:
        montant = ligne["montant"]
        if montant is None:
            continue
        somme += montant
    return somme

À décider : ignorer les lignes sans montant, ou lever une erreur explicite, selon la règle métier.

4. Test à ajouter Un test avec une liste contenant une ligne dont le montant est None, qui vérifie le comportement choisi.

Prompts liés