ACCADEMIA AI · CAPITOLO 34 DI 50

Capitolo 34 · Debugger

Analizza questo errore e trova una soluzione passo dopo passo, con prove verificabili.

diagnosi guidata degli errori14 casi praticiPrompt copiabiliDebugger Lab
Progresso di lettura: 0%
Tutte le 50 lezioni
LEZIONE 01

Dal sintomo alla causa

Una prenotazione può sembrare riuscita ma essere duplicata o non salvata. Il debugging parte da ciò che accade davvero: osservare, isolare e verificare; non modificare codice a tentativi.

💬 Prompt pronto da copiare

Aiutami a diagnosticare un errore di prenotazione. Separa ciò che è osservato dalle ipotesi, chiedi i dati mancanti e suggerisci prove non distruttive prima di qualsiasi modifica.

LEZIONE 02

Quattro parole che non vanno confuse

Sintomo: il risultato visibile. Causa: il meccanismo che lo produce. Correzione: la modifica che rimuove la causa. Prova: il test che conferma il risultato. Un messaggio di errore non equivale alla diagnosi.

💬 Prompt pronto da copiare

Per questo errore separa sintomo, causa ipotizzata, correzione proposta e prova necessaria. Non trattare il messaggio di errore come una spiegazione completa. [errore e contesto]

LEZIONE 03

Passaggio 1 · Il risultato atteso

Prima di aprire il codice descrivi il comportamento corretto con un esempio misurabile. «Registrare una sola prenotazione» aiuta molto più di «non funziona».

💬 Prompt pronto da copiare

Fammi definire il risultato atteso in modo verificabile: input, output, condizioni e comportamento da preservare. Poi chiedimi che cosa avviene invece.

LEZIONE 04

Passaggio 2 · Raccogliere le prove

Raccogli testo esatto dell’errore, stack trace, orario e comportamento osservato. Elimina token, password e dati personali prima di condividere log o schermate.

💬 Prompt pronto da copiare

Aiutami a raccogliere prove dell’errore. Indicami quali messaggi, righe e log sono pertinenti, e come oscurare segreti e dati personali. [sintomo]

LEZIONE 05

Passaggio 3 · Riprodurre il difetto

Annota sequenza dei clic, dati di prova, browser, dispositivo, linguaggio e versione. Un bug che compare solo con un campo vuoto o su telefono offre indizi importanti.

💬 Prompt pronto da copiare

Progetta una procedura minima e ripetibile per ricreare questo bug con dati fittizi. Includi ambiente, passaggi, input e risultato osservato. [descrizione]

LEZIONE 06

Passaggio 4 · Tre ipotesi, tre prove

Ordina fino a tre cause plausibili e associa a ciascuna un esperimento che possa confermarla o smentirla. Evita una lista infinita di possibili cause.

💬 Prompt pronto da copiare

Non correggere subito. Elenca fatti osservati, fino a tre cause plausibili ordinate per probabilità, una prova per ciascuna e le informazioni mancanti. [errore]

LEZIONE 07

Passaggio 5 · Isolare la causa

Riduci il problema a un frammento minimo riproducibile. Non cambiare contemporaneamente query, template e configurazione: perderesti la possibilità di capire quale modifica ha funzionato.

💬 Prompt pronto da copiare

Aiutami a ridurre questo errore a un caso minimo riproducibile, mantenendo il comportamento difettoso. Proponi una prova alla volta. [codice]

LEZIONE 08

Passaggio 6 · Correggere il minimo

Conserva una copia prima di intervenire e preferisci una modifica circoscritta. Non disabilitare controlli di sicurezza, log o validazioni per far scomparire il sintomo.

💬 Prompt pronto da copiare

Dopo avere identificato la causa, proponi la modifica minima, spiegando il rischio di regressione e come tornare alla versione precedente. [codice e causa confermata]

LEZIONE 09

Passaggio 7 · Dimostrare il risultato

Ripeti il test che falliva e prova casi vicini: input vuoti, doppi clic, date limite e browser diversi. Se non hai eseguito il programma, non dichiarare che il bug è risolto.

💬 Prompt pronto da copiare

Prepara test prima/dopo e di regressione per questa modifica. Distingui i test da eseguire dai risultati effettivamente osservati. [bug e patch]

LEZIONE 10

Laboratorio del libro · 1020 anziché 30

Due campi HTML contengono le stringhe "10" e "20". In JavaScript prezzo1 + prezzo2 può concatenarle e produrre "1020". Convertire i valori è necessario, ma vanno gestiti anche input vuoti, non numerici e, per il denaro reale, precisione e arrotondamenti.

💬 Prompt pronto da copiare

In JavaScript, due valori letti da campi di un modulo vengono concatenati invece di sommarsi. Il codice è: const totale = prezzo1 + prezzo2; Spiega come controllare i tipi, proponi una correzione che gestisca valori non numerici e scrivi almeno quattro test. Non presumere input sempre validi.

LEZIONE 11

Quando la diagnosi dell’AI è sbagliata

Un assistente può inventare funzioni inesistenti o proporre una soluzione elegante al problema sbagliato. Domanda sempre quale risultato confermerebbe l’ipotesi e quale la smentirebbe.

💬 Prompt pronto da copiare

Valuta criticamente questa diagnosi: quale prova la conferma, quale la smentisce e quali informazioni mancano? Non inventare funzioni, versioni o test eseguiti. [diagnosi]

LEZIONE 12

Debugging senza esporre dati

Nei log possono comparire email, percorsi interni, token e identificativi. Condividi soltanto frammenti anonimizzati. Per sistemi sensibili usa ambienti di prova e coinvolgi i responsabili competenti.

💬 Prompt pronto da copiare

Aiutami a preparare un report di errore anonimo, sostituendo segreti e dati personali con segnaposto e mantenendo soltanto le informazioni tecniche indispensabili.

LEZIONE 13

Un rapporto da conservare

Documenta sintomo iniziale, condizioni di riproduzione, ipotesi scartate, causa confermata, patch, test realmente eseguiti e problemi residui. La documentazione rende più semplice evitare ricadute.

💬 Prompt pronto da copiare

Prepara un rapporto di debugging usando soltanto i dati che fornirò. Separa sintomi, ipotesi scartate, causa confermata, modifica, test effettivamente eseguiti e questioni aperte. Concludi con una checklist di regressione.

DAL LIBRO

14 casi pratici · Dal pulsante immobile al deploy

Ogni caso segue lo stesso metodo: descrivere il sintomo, raccogliere prove, distinguere ipotesi, applicare una modifica minima e verificare le regressioni. I primi sette casi sono introduttivi; i successivi affrontano problemi avanzati.

CASO PRATICO 01 · PER CHI COMINCIA

Pulsante che non reagisce

Il clic non produce un risultato visibile; controlla il momento in cui lo script collega l’evento, l’esistenza dell’elemento e gli errori in console.

💬 Prompt pronto da copiare

Analizza un pulsante HTML e JavaScript che non reagisce al clic. Prima chiedimi HTML, JavaScript, errori della console e quando il codice viene eseguito. Proponi controlli ordinati e una modifica minima. Non riscrivere tutta la pagina.

CASO PRATICO 02 · PER CHI COMINCIA

Data che cambia giorno

Un promemoria previsto per lunedì appare domenica: distingui data civile, istante UTC, parsing e fuso orario.

💬 Prompt pronto da copiare

Aiutami a diagnosticare uno scostamento di un giorno nella visualizzazione di una data. Chiedimi formato, fuso orario, parsing e ambiente. Proponi test vicino a mezzanotte e al cambio d’ora.

CASO PRATICO 03 · PER CHI COMINCIA

Modulo che perde i dati

Dopo un errore di validazione, i campi già compilati si svuotano. Occorre preservare soltanto valori non sensibili e rendere chiari gli errori.

💬 Prompt pronto da copiare

Analizza un modulo che perde i dati dopo un errore di validazione. Suggerisci come preservare valori non sensibili, mostrare errori comprensibili e verificare client e server.

CASO PRATICO 04 · PER CHI COMINCIA

Contatore condiviso incoerente

Due aggiornamenti simultanei possono sovrascriversi. Un’operazione atomica può essere più adatta di una correzione grafica.

💬 Prompt pronto da copiare

Spiegami perché un contatore condiviso può perdere aggiornamenti quando due utenti lo modificano contemporaneamente. Distingui interfaccia e concorrenza; proponi una prova riproducibile.

CASO PRATICO 05 · PER CHI COMINCIA

Ricerca che ignora gli accenti

La rubrica non trova «Èlia» digitando «elia». La normalizzazione deve essere coerente con lingua e tipo di ricerca.

💬 Prompt pronto da copiare

Analizza una ricerca testuale che fallisce con accenti, maiuscole e spazi. Proponi una strategia coerente con la lingua, evitando di eliminare caratteri significativi.

CASO PRATICO 06 · PER CHI COMINCIA

Pagina mobile che esce dallo schermo

Controlli non visibili su telefono: individua l’elemento troppo largo e verifica zoom, orientamento e accessibilità.

💬 Prompt pronto da copiare

Aiutami a individuare la causa di un layout che esce dallo schermo su smartphone. Chiedimi HTML, CSS, viewport e screenshot. Proponi correzioni mirate e controlli di accessibilità.

CASO PRATICO 07 · PER CHI COMINCIA

File salvato ma non trovato

Un messaggio di successo non dimostra che il file sia stato scritto nel percorso corretto.

💬 Prompt pronto da copiare

Guidami nel debugging di un salvataggio file che sembra riuscire ma non produce un documento nel percorso previsto. Verifica percorso assoluto, permessi, errori e conferma effettiva della scrittura. Non suggerire cancellazioni.

CASO PRATICO 08 · PER CHI PROGRAMMA GIÀ

Errore 500 dopo la migrazione PHP

Un aggiornamento può introdurre incompatibilità, estensioni mancanti, configurazioni o permessi diversi.

💬 Prompt pronto da copiare

Aiutami a diagnosticare un errore HTTP 500 dopo l’aggiornamento PHP. Ho queste versioni e log: [dati]. Distingui incompatibilità, estensioni mancanti, configurazione e permessi. Suggerisci verifiche non distruttive, una per volta.

CASO PRATICO 09 · PER CHI PROGRAMMA GIÀ

Query SQL improvvisamente lenta

La stessa query ora impiega più tempo: servono piano di esecuzione, indici, filtri, volume dati e misurazioni confrontabili.

💬 Prompt pronto da copiare

Analizza una query SQL lenta. Chiedimi schema, indici, volume dati, query e piano di esecuzione anonimizzati. Proponi ipotesi e confronti misurabili senza modifiche distruttive immediate.

CASO PRATICO 10 · PER CHI PROGRAMMA GIÀ

Timeout intermittenti di una API

Distinguere rete, rate limit, durata di elaborazione e retry; non ripetere automaticamente operazioni che possono duplicarsi.

💬 Prompt pronto da copiare

Esamina timeout intermittenti verso un’API. Distingui rete, limiti del servizio, elaborazione e retry. Proponi log sicuri, identificatori di richiesta e tentativi limitati.

CASO PRATICO 11 · PER CHI PROGRAMMA GIÀ

Test che fallisce soltanto nella suite

Il test passa isolato ma fallisce con altri: possibili stati condivisi, dipendenze temporali e risorse non ripulite.

💬 Prompt pronto da copiare

Analizza un test instabile che passa isolatamente ma fallisce nella suite. Cerca stato globale, dati condivisi, dipendenze temporali e risorse non ripulite. Proponi isolamento e verifica.

CASO PRATICO 12 · PER CHI PROGRAMMA GIÀ

Dati di un altro account nella cache

Un sospetto difetto di isolamento tra utenti va trattato come incidente: prima contenimento, poi verifiche con account fittizi.

💬 Prompt pronto da copiare

Aiutami a gestire in modo difensivo un possibile difetto di autorizzazione o cache che espone dati tra account. Indica prima contenimento e verifiche sicure con dati fittizi. Non suggerire sfruttamento su sistemi reali.

CASO PRATICO 13 · PER CHI PROGRAMMA GIÀ

Memoria in crescita durante un import

Il consumo aumenta elaborando molte righe, ma non è automaticamente una perdita di memoria.

💬 Prompt pronto da copiare

Analizza un aumento progressivo della memoria durante l’elaborazione di un file grande. Chiedimi linguaggio, dimensioni, profilo e frammento minimo. Proponi misure e una soluzione verificabile senza presumere un leak.

CASO PRATICO 14 · PER CHI PROGRAMMA GIÀ

Deploy completato, applicazione non sana

Una pipeline verde non garantisce che le funzioni critiche siano disponibili dopo la pubblicazione.

💬 Prompt pronto da copiare

Analizza un deploy riuscito seguito da errori applicativi. Distingui pipeline, configurazione, migrazioni, dipendenze e health check. Proponi controlli in ordine di rischio e criteri per rollback.

IL PROMPT DA CONSERVARE

Una diagnosi completa, senza salti logici

Il prompt finale del libro richiede contesto, comportamento atteso e osservato, errore completo, riproduzione e codice senza segreti. L’assistente deve formulare al massimo tre cause plausibili, spiegare come confermarle e proporre la patch soltanto dopo avere chiarito la causa.

💬 Prompt pronto da copiare

Agisci come un debugger esperto, prudente e didattico. Linguaggio e versione: [dati]. Ambiente: [dati]. Comportamento atteso: [descrizione]. Comportamento osservato: [descrizione]. Errore completo: [errore]. Passaggi per riprodurlo: [passaggi]. Codice pertinente: [senza segreti]. Prima separa fatti e ipotesi. Individua fino a tre cause plausibili, con una prova che confermi o smentisca ciascuna. Guidami passo dopo passo partendo dai controlli meno rischiosi. Proponi la correzione minima solo dopo avere chiarito la causa. Indica test e regressioni; non inventare esecuzioni.

LABORATORIO VISIVO

🔎 Prima e dopo · Quattro esempi inediti

Seleziona un caso: dal tentativo di correggere a intuito a una diagnosi che si può verificare. Ogni prompt è copiabile.

✗ Prima

Il valore del sensore è sbagliato: cambio tutta la formula.

✓ Dopo

Il sensore mostra 120% in alcune letture. Prima verifico unità, scala e valori grezzi con tre campioni noti, poi intervengo solo sulla conversione se risulta errata.

💬 Prompt pronto da copiare

Aiutami a diagnosticare un sensore di umidità che mostra 120%. Separa dati osservati e ipotesi su scala, calibrazione e conversione. Proponi tre prove e una patch minima solo dopo la diagnosi.

STRUMENTO INTERATTIVO

🛠️ Debugger Lab · Crea il tuo prompt

Descrivi un errore reale o inserisci un esempio. Il laboratorio prepara una richiesta strutturata da copiare in ChatGPT; non esegue codice, non invia dati e non richiede API.

Compila il testo e premi «Genera prompt».
VERIFICA

🧠 Quiz finale · Capitolo 34

Tre domande per verificare il metodo. Dopo la correzione comparirà soltanto ✓ o ✗ accanto alla risposta selezionata.

1. Qual è il primo passo quando compare un bug?

2. Come si valuta una possibile causa?

3. Quando è corretto dichiarare che un test è passato?

Rispondi alle tre domande per vedere il punteggio.

I progressi del quiz sono salvati su questo dispositivo.