gdb: manuale di rapida consultazione

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

Debugger. Marco Alberti Programmazione e Laboratorio, A.A

Debugger. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Debug di un programma

GDB. The GNU Debugger

Lezione 19: Il preprocessore

Rappresentazione di interi

Assembly (3): le procedure

Informatica B Esercitazione 2

Il linguaggio macchina

Assembly IV Le procedure

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Capitolo Tavola e grafico

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Assembly (3): le procedure

Dati due punti sul piano calcolare la loro distanza

L utility Unix awk [Aho-Weinberger-Kernighan]

Variabili e Istruzioni

Introduzione al linguaggio macchina. Istruzione l/m

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

L AMBIENTE CODE BLOCKS E L IO

L utility Unix awk [Aho-Weinberger-Kernighan]

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

MIPS Instruction Set 2

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Controllo di flusso. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Lezione 6 Introduzione al C++ Mauro Piccolo

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 8 14/11/2013

02/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 8 STRUTTURE DI CONTROLLO (1)

Debug con GDB. Gennaro Oliva Laboratorio di sistemi operativi 01/06/2007

Il linguaggio JavaScript

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

Lezione laboratorio SPIM

Laboratorio di Informatica I

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

Debugging. Debugging 1

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

Fetch Decode Execute Program Counter controllare esegue prossima

Istruzioni di trasferimento dati

Sistemi di numerazione

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

Compilatori. g ++ prog.c. che crea il file eseguibile a.out. È utile conoscere alcune opzioni di g ++

Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito.

Corso di Architettura (Prof. Scarano) 10/05/2002

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Controllo di flusso negli script: if-then-else

Introduzione al linguaggio macchina

Introduzione alla programmazione. Alice Pavarani

Introduzione. Architettura

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Scrittura formattata - printf

L ambiente UNIX/Linux. Strumenti per la programmazione C Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Laboratorio di Informatica I

Dos: script dell interprete dei comandi

Programmazione in Java (I modulo) Lezione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.

STRUTTURE DI CONTROLLO DEL C++

Il linguaggio C. Puntatori e dintorni

Fondamenti di Informatica

Contenuti: 1. Strumenti per il debugging nel Kernel LINUX: printk() e panic()

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Le basi del linguaggio Java

Manualistica 3 Le strutture di controllo

Università degli Studi di Milano

Parte I - Concetti Base

Fondamenti di Informatica

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Fondamenti di Informatica Ing. Biomedica

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Istruzioni di controllo del flusso

Esercizi Programmazione I

L AMBIENTE CODE BLOCKS E L IO

Lezione 11: Liste a Puntatori e Input/Output

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

1. Un array è: A. Un simbolo usato nel linguaggio C per rappresentare un numero non specificato di variabili B. Un insieme di indirizzi di memoria

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012

Processore Danilo Dessì. Architettura degli Elaboratori.

Introduzione al linguaggio assembly MC68000

Cenni sull'uso dei debugger

Area FA AE Specifica tecnica STM004 Cliente: FA AE

Sistemi a microprocessore

Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini

Corso di BASCOM (Capitolo 9 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. Codice Morse. (3).

Fondamenti di Informatica T-1 CdS Ingegneria Informatica. Introduzione agli ambienti di sviluppo MS Visual Studio 2005/2008/2010 CodeLite 6.1.

Stringhe. Stringhe costanti. t[0] t[1] t[2] t[3] t[4] s o l e \0. Esempio. char t[5] = { l, u, n, a, \0 }; definisce l array

INTRODUZIONE A VISUAL STUDIO

Calcolatori Elettronici

Strutture di Controllo

Corso di Laboratorio di Sistemi Operativi

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

File binari e file di testo

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Transcript:

gdb: manuale di rapida consultazione Argomenti trattati: Legenda: Settare bp Vedere bp settati Cancellare bp Disabilitare bp Riabilitare bp Settare wp Visualizzare wp Condizioni per i bp/wp Modificare/Aggiungere la condizione Cancellare la condizione Eseguire lo stop del programma solo dopo m volte che si e verificato il bp/wp Eseguire comandi in automatico quando si verifica lo stop per un bp Continuare l esecuzione del programma Vedere il disassemblato Assegnare il valore ad una variabile Continuare ad un indirizzo diverso Ritornare da una funzione Chiamare funzioni Stampare il valore di una espressione Visualizzare il contenuto delle locazioni di memoria Settare una visualizzazione automatica Visualizzare le visualizzazioni automatiche settate Disabilitare le visualizzazioni automatiche settate Riabilitare le visualizzazioni automatiche settate Cancellare le visualizzazioni automatiche settate Vedere tutti i registri e i loro valori Esaminare la symbol-table... valgono tutte le opzioni valide per il comando base [ ] parametri opzionali bp breakpoint wp watchpoint Suggerimento: Create l alias gdb="gdb -q" in modo che gdb parta senza visualizzare le info iniziali. Settare bp:

Comando break (abbreviato b) break nome_funzione bp sulla funzione (solo se sono presenti le info di debug, o se avete usato labelz ;) break +offset break -offset bp offset linee dopo/prima l istruzione corrente break *indirizzo bp all istruzione a indirizzo break (niente) bp all istruzione successiva a quella corrente bp condizionati: break... if condizione stop solo se e valutata VERA la condizione bp particolari: tbreak... come break ma valido solo per uno stop, poi viene cancellato automaticamente Vedere bp settati: info breakpoints [n] visualizza tutti i bp (o il bp numero n se indicato) Indicazioni visualizzate: Numero_bp Tipo (bp/wp) Disposizioni Abilitato(y)/Disabilitato(n) Indirizzo_bp Posizione_nel_sorgente Cancellare bp: Comando delete (abbreviato d) delete [n] cancella tutti i bp (o il bp numero n se indicato) Comando clear (se si da il comando appena dopo che il programma si e appena fermato ad un bp si cancella il bp stesso) clear [nome_funzione] cancella il bp sulla prossima istruzione (o il bp su nome_funzione se indicato) Disabilitare bp: Comando disable (abbreviato dis)

disable [n] disabilita tutti i bp (o il bp numero n se indicato) Riabilitare bp: Comando enable enable [n] riabilita tutti i bp (o il bp numero n se indicato) enable once [n] riabilita tutti i bp (o il bp numero n se indicato) ma al primo stop viene disabilitato automaticamente Settare wp: Comandi watch locazione wp quando il programma scrive su locazione rwatch locazione wp quando il programma legge da locazione awatch locazione wp quando il programma scrive o legge locazione Visualizzare wp: info watchpoints equivale a "info breakpoints" Condizioni per i bp/wp: Osservazioni: - per i wp la condizione puo essere settata solo con il comando "condition" - devono essere condizioni booleane - viene fermato il programma solo se la condizione indicata e valutata vera - e possibile negare la condizione anteponendo il simbolo! alla condizione (! not in C) Modificare/Aggiungere la condizione condition n condizione aggiunge condizione al bp/wp numero n Cancellare la condizione

condition n (niente) cancella la condizione al bp/wp numero n (in realta setta la condizione a niente) Eseguire lo stop del programma solo dopo m volte che si e verificato il bp/wp ignore n m setta il bp/wp numero n in modo che generi lo stop del programma solo dopo m volte che si e verificato il bp/wp stesso Eseguire comandi in automatico quando si verifica lo stop per un bp Comando commands commands n lista_comandi end imposta la lista dei comandi da eseguire per il bp numero n Suggerimento: mettere come primo comando "silent" per sopprimere il normale output del bp es. Stampare il valore della variabile x, settando il bp sulla funzione prova, solo se x e >0 e poi continuare l esecuzione del programma. I comandi vengono indicati quando viene dichiarato il bp. break prova if x>0 commands silent printf "x vale: %d\n",x continue end Continuare l esecuzione del programma Comando continue (abbreviato c o fg) continue [n] continua l esecuzione del programma; se n e indicato ignora per n stop l ultimo bp su cui si e fermato Comando step (abbreviato s) step [n] continua l esecuzione del programma fino alla prossima riga del codice sorgente; ATTENZIONE: se non si ha a disposizione il sorgente o si e in una funzione senza informazioni di debug ritorna alla funzione chiamante. Se n e indicato esegue n step Comando stepi (abbreviato si)

stepi [n] continua l esecuzione del programma eseguendo ogni singola istruzione macchina Se n e indicato esegue n stepi Suggerimento: dare il comando "display/i $pc" per visulizzare in modo automatico l istruzione che deve essere eseguita (vedere Visualizzazione automatica) Comando next (abbreviato n) next [n] continua l esecuzione fino alla prossima istruzione nello stack frame corrente; se l istruzione e una funzione, non entra nella funzione ma la esegue come fosse una singola istruzione Se n e indicato esegue n next Comando nexti (abbreviato ni) nexti [n] continua l esecuzione fino alla prossima istruzione nello stack frame corrente; se l istruzione e una funzione, entra nella funzione Se n e presente esegue n nexti Comando finish finish continua l esecuzione del programma fino alla termianzione della funzione corrente e stampa il valore di ritorno (se c e ) Comando until (abbreviato u) until continua l esecuzione del programma fino a quando le istruzioni eseguite hanno indirizzo minore dell istruzione sulla quale si da il comando until. Utile nei cicli con salto all indietro until indirizzo continua l esecuzione del programma fino a quando viene raggiunta l istruzione all indirizzo "indirizzo" Vedere il disassemblato Comando disassemble disassemble visualizza il sorgente assembly della funzione in cui si trova l istruzione corrente disassemble indirizzo visualizza il sorgente assembly della funzione in cui si trova l istruzione a indirizzo disassemble ind_i ind_f

visualizza il sorgente assembly delle istruzioni dall indirizzo ind_i (compreso) all indirizzo ind_f (escluso) Alterare l esecuzione del programma: Assegnare il valore ad una variabile Comando set set nome_var=valore setta la variabile nome_var a valore Suggerimento: se il nome di nome_var coincide con un sottocomando di set usare la sintassi "set var nome_var=valore" Se si vuole effettuare il casting di una locazione di memoria set {tipo_dato}indirizzo=valore es. Copiare 4 come intero nella locazione 0x83040 set {int}0x83040=4 Continuare ad un indirizzo diverso Comando jump jump num_linea riprende l esecuzione dalla linea num_linea jump *indirizzo riprende l esecuzione dall istruzione all indirizzo indirizzo Comando set set $pc=indirizzo la prossima istruzione sara l istruzione all indirizzo indirizzo, ma a differenza di jump non riprende l esecuzione Ritornare da una funzione return [val_ritorno] cancella l esecuzione della funzione; se presente ritorna val_ritorno coma valore di ritorno della funzione Chiamare funzioni call nome_funzione chiama la funzione nome_funzione

Esaminare i dati: Stampare il valore di una espressione Comando print (abbreviato p) print[/f] espressione visualizza il valore di espressione; se presente /f utilizza il formato indicato Formati di visualizzazione x d u o t a c f intero esadecimale intero decimale intero decimale senza segno intero ottale intero binario indirizzo carattere virgola mobile es. Stampare il valore di $pc in esadecimale print/x $pc Visualizzare il contenuto delle locazioni di memoria Comando x x[/nfu] indirizzo visualizza il contenuto della locazione di memoria a indirizzo; se presenti utiliza i parametri /nfu Parametri n f u intero decimale; indica quante unita di memoria visualizzare partendo da indirizzo formato di visualizzazione s stringhe null-terminated i istruzioni macchina dimensione di una unita b byte h mezza word w word g doppia word es. Visualizzazione di 3 istruzioni da quella a indirizzo x/3i indirizzo Suggerimento: per visualizzare m unita successive mantendendo lo stesso formato e sufficiente dare il comando x/m es. visualizzare 7 istruzioni macchina dopo aver dato il comando "x/3i" x/7

Visualizzazione automatica Settare una visualizzazione automatica Comando display display[/f] espressione visualizza il valore di espressione; se /f e presente usa il formato indicato Formati di visualizzazione x d u o t a c f i s intero esadecimale intero decimale intero decimale senza segno intero ottale intero binario indirizzo carattere virgola mobile istruzione striga null-terminated Se il formato e i o s display[/f] indirizzo visualizza il contenuto della locazionea indirizzo Visualizzare le visualizzazioni automatiche settate info display visualizza tutte le le visualizzazioni automatiche settate Disabilitare le visualizzazioni automatiche settate disable display n disabilita la visualizzazione automatica numero n Riabilitare le visualizzazioni automatiche settate enable display n abilita la visualizzazione automatica numero n Cancellare le visualizzazioni automatiche settate delete display n cancella la visualizzazione automatica numero n

Vedere tutti i registri e i loro valori info registers visualizza tutti i registri e i loro valori, esclusi i registri floating point info all-registers visualizza tutti i registri e i loro valori, compresi i registri floating point Esaminare la symbol-table info address simbolo visualizza dove e memorizzato simbolo whatis espressione visualizza il tipo di dato di espressione ptype nome_tipo visualizza una descrizione del tipo di dato ptype espressione visualizza una descrizione di espressione; piu completo di whatis info source visualizza il nome del file sorgente attuale info sources visualizza tutti i file sorgenti con informazioni di debug info functions [expr] visualizza nome e tipo di dati di tutte le funzioni; se e presente expr, solo di quelle il cui nome contiene expr info variables [expr] visualizza informazioni su tutte le varibili; se e presente expr, solo di quelle il cui nome contiene expr syscalo - sab 06 gen 2001