GDB. The GNU Debugger



Documenti analoghi
COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

Introduzione a GCC: GNU Compiler Collection

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Debugger. Marco Alberti Programmazione e Laboratorio, A.A

Cos'è il Debug? Il debug di un programma è la fase di ricerca e correzione di errori che si manifestano a runtime

ISTRUZIONI XCODE. Autore: Luca Florio (luca.florio<at>polimi.it)

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

PAD: istruzioni di laboratorio

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Eclipse - Nozioni Base

Utilizzare il debugger di Visual Studio

RISOLUTORE AUTOMATICO PER SUDOKU

1.0 GUIDA PER L UTENTE

Punto Print Il programma per stampare. Documentazione Tecnica

Versione 2.0. Manuale d uso. Software per la gestione. degli applicativi Bticino. TiManager 03/07-01 PC

Introduzione a LyX. Creazione di un documento Struttura e stile Modelli di documento Automatismi Riferimenti...

ISTRUZIONI PER L INSTALLAZIONE DI MINGW

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

MANUALE PARCELLA FACILE PLUS INDICE

Piattaforma software mfp

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

L AMBIENTE DI PROGRAMMAZIONE TURBO PASCAL... 2 LE COMPONENTI DELL AMBIENTE DI SVILUPPO... 2 La barra dei menu... 2 Il desktop o finestra attiva...

MANUALE EDICOLA 04.05

Introduzione al Python

SOMMARIO... 3 INTRODUZIONE...

GUIDA AL PRONTUARIO MOBILE

GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER

Manuale Intesa. Guida all apertura di un ticket di assistenza online

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Per utilizzare il sistema VCP il programmatore deve inserire una porzione di codice di VCP nella sua applicazione.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

ESTARWEB ISTRUZIONI SEZIONE DOCUMENTALE

Scrivere un programma in Java

Manuale Terminal Manager 2.0

NOZIONI BASE PER ESERCITAZIONI

Importazione dati da Excel

Introduzione a Visual Studio 2005

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Technical Document Release Version 1.0. Product Sheet. MediaList. Creazione e gestione palinsesto giornaliero

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Introduzione a Dev-C++

ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Moda.ROA. Raccolta Ordini Agenti

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

MANUALE UTENTE Fiscali Free

Installazione LINUX 10.0

4. Un ambiente di sviluppo per Java

Programmare in Java. Olga Scotti

Configurare TPTP in Eclipse e testare un applicazione

Nuova versione di Arianna Office Net RBWeb : Guida alla gestione dei flussi

Laboratorio di Architettura degli Elaboratori

Istruzioni per installare EpiData e i files dati ad uso di NetAudit

LO STATO DI AVANZAMENTO DELLE PRATICHE INVIATE TELEMATICAMENTE E LA GESTIONE DELLE CORREZIONI

Talvolta i programmi che scriviamo non funzionano, oppure forniscono risultati che non ci aspettiamo

Come predisporre i dati per l invio

Il controllo della visualizzazione

IRSplit. Istruzioni d uso 07/10-01 PC

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

RISOLUZIONE DEI PROBLEMI LEGATI ALLA CNS VERSIONE 1.0

Manuale di KSig. Richard A. Johnson Traduzione del documento: Daniele Micci

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Microsoft Word Microsoft Word 2002

Appunti di Informatica 1

Angelo Gueli da Puntoedu.indire Corso sull uso delle Nuove Tecnologie 1

GESTIONE CANTINA MANUALE GESTIONE CANTINA 1

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

Strumenti per lo sviluppo del software

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

MagiCum S.r.l. Progetto Inno-School

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Manuale Utente Albo Pretorio GA

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Guida Operativa Programma Pestalozzi

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Funzioni in C. Violetta Lonati

Sistema di Gestione Integrato ISTRUZIONE OPERATIVA CONSUNTIVAZIONE ON - LINE ISO 9001:2000 ISO 14001:2004

PRODUZIONE PAGELLE IN FORMATO PDF

NVU Manuale d uso. Cimini Simonelli Testa

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

BLOCK CALL Manuale utente Block Call Manuale Utente

Guida Software GestioneSpiaggia.it

GUIDA ALL UTILIZZO DEL PORTALE DELLA RETE DEI COMUNI OGLIO PO

Inventario di Magazzino Manuale Utente. Inventario di Magazzino Manuale Utente

MANUALE D USO DELLA PIATTAFORMA ITCMS

Programma Gestione Presenze Manuale autorizzatore. Versione /08/2010. Area Sistemi Informatici - Università di Pisa

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Editor vi. Editor vi

ROBOMAT. ROBOMAT Progettare, comunicare, stabilire relazioni di tipo spaziale misurare in tipiche situazioni di problemsolving

Laboratorio di Basi di Dati e Web

Transcript:

GDB The GNU Debugger

Il problema del programmatore Il programmatore perfetto non esiste! Nessuna sicurezza che il programma funzioni al primo colpo Più il programma è grande più ci possono essere errori (bug) La maggior parte dei problemi si riscontrano in fase di testing (spesso proprio durante una demo!)

Tipi di problemi Il programma non viene eseguito come ci si aspetta Risultati indesiderati Comportamenti non previsti Il programma si blocca, andando in crash Accesso a zone di memoria non autorizzate Cattivo utilizzo delle risorse Necessario un metodo efficiente per individuare gli errori

Possibili soluzioni Lavorare sulla carta Trace table, flow chart, etc. Molto lento Impraticabile con programmi enormi Non sempre si individuano gli errori Stampa di info aggiuntive nel programma Poco elegante e scomodo Non sempre efficace

Scelta migliore: Debugger Programma usato per analizzare il comportamento di un altro programma De in senso privativo, Bug = errore Con un debugger si può: Eseguire il programma un istruzione alla volta Fermare l esecuzione in un dato punto Ispezionare il contenuto di variabili Sapere a che punto è l esecuzione

GDB: Debugger per C e C++ Gnu DeBugger Sviluppato dallo stesso Richard Stallman (autore di gcc) Interfaccia a linea di comando

Compilazione C è bisogno di avere più informazioni per il debug sul file eseguibile Tipicamente tali informazioni vengono inserite dal compilatore Con gcc: gcc g nomefile.c gcc g nomefile.c o nomeeseguibile

Avvio GDB gdb nomeeseguibile labos:~/labos$ gcc -g -o palindroma palindroma.c labos:~/labos$ gdb palindroma GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"...using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) _ quit uscire da GDB

Prompt di GDB Interfaccia simile a Bash I tasti cursore sfogliano la history dei comandi Il tasto tab completa il comando inserito Il tasto invio senza nulla esegue l ultimo comando inserito help mostra la lista e l help dei comandi

Comandi base Nome comando run, r print, p where break, b list, l next, n step, s display watch continue, c Breve descrizione Esegue il programma caricato Stampa il valore di un espressione (una var.) Mostra il backtrace dello stack (punto di esecuzione) Imposta un break-point Mostra il codice numerando le righe Avanza alla successiva linea di codice Come next, ma entra nelle chiamate a funzione Simile a print, ma stampa ad ogni passo Imposta un watch-point Continua l esecuzione

Comando run Fa partire l esecuzione del programma Possibile aggiunta degli argomenti da passare al programma Es. run pippo 3 L esecuzione continua fino ad un punto di break (vedere dopo)

Comando print print (p): stampa il contenuto di una variabile print variabile es. print a Si può anche stampare il risultato di un espressione print espressione es. print a+b

Comando where Mostra lo stack corrente delle chiamate a funzioni Molto utile per sapere in che punto dell esecuzione ci si trova può non bastare il numero di riga! Esempio: Ci si trova nella funzione potenza (riga 6), invocata dal main (riga 12) (gdb) where #0 potenza (base=2, esp=3) at potenza.c:6 #1 0x080483b6 in main () at potenza.c:12

Punto di break Punto in cui si vuol sospendere l esecuzione per analizzarla Esistono due tipi fondamentali: Normal Break-Point (o solo Break-Point) Associati ad una riga del codice Watch-Point Associati al cambiamento del valore di una variabile Gdb tiene traccia della lista di tutti i point I point possono essere visualizzati o cancellati Ad ogni point si associa un numero progressivo

Normal Break-Point Creazione col comando break (b): In base al numero di riga break numeroriga Comando list per visualizzare le righe numerate In base al nome di una funzione break nomefunzione Visualizzazione dei break-points con info: info break (o info watch) Cancellazione di un break-point con delete (d): delete numeropoint

Comandi next e step next (n) e step (s) eseguono l istruzione corrente e mostrano quella successiva Se l istruzione è una chiamata a funzione: next esegue il programma fino all'uscita dalla chiamata (non entra nelle sotto-funzioni) step si ferma alla prima istruzione della chiamata (entra nelle sotto-funzioni) hanno senso solo se il programma è in esecuzione (e sospeso)

Comando display display: stampa il risultato di un espressione al termine di ogni passo Gdb tiene traccia di tutti i display info display ne mostra la lista (con il numero associato) delete display numero cancella il display indicato da numero

Watch-Point Watch-Point: L esecuzione viene sospesa quando una delle variabili in watching cambia di valore Viene mostrato il contenuto prima e dopo Creazione col comando watch: Associato alla variabile (o espressione) che si vuole analizzare watch nomevariabile Visualizzazione dei watch-points con info: info watch (o info break) Cancellazione di un watch-point con delete (d): delete numeropoint

Comando continue continue (c) fa riprendere l esecuzione fino al prossimo breakpoint Utile quando si è interessati solo a punti particolari dell esecuzione

Ddd: un front-end grafico ddd: Data Display Debugger Interfaccia grafica per gdb Necessario installarlo prima!