PDA

Visualizza la versione completa : [GDB]-Debug di un programma C multimodulare


HKfly
26-05-2010, 17:46
Ciao a tutti, ho usato gdb sotto linux per programmi fatti di un unico modulo .c.
E' possibile eseguire con gdb il debug di un programma C fatto di più moduli? Se si, come devo compilarli per permettere a gdb di funzionare? Intendo dire, per compilare abilitando la possibilità di eseguire il debugger uso il flag "-ggdb" o "-g" (che differenza c'è fra questi due flag? gdb sembra funzionare ugualmente con entrambi nel mio caso) quando lancio il compilatore gcc. Ma nel caso io abbia più moduli e un makefile come devo procedere? Metto il flag -g in tutte le righe del makefile in cui chiamo gcc?

Ho provato in diversi modi ma quando faccio partire gdb col comando "gdb ./<nome_programma>" appena setto un breakpoint mi dice "No line <numero> in file "init.c".". Poi ho pensato che nel caso si abbiano più moduli non avrebbe senso limitarsi a dirgli la linea ma dovrei anche specificare il nome del file .c a cui mi riferisco...

Ho cercato con Google e sulla documentazione di gdb ma non trovo nulla.

ciao e grazie anticipatamente!


AGGIUNTA: se compilo così:

gcc -g -o my_prog main.c sp.c ex.c

Riesco a debuggare mettendo breakpoints col comando "break <linea>" ma si riferiscono al file main.c: se volessi settare breakpoints in altri sorgenti del mio programma che comando dovrei dare all'interno di gdb?


Se compilo invece col makefile:

my_prog: main.o splitline.o ex.o
... gcc -o my_prog main.o sp.o ex.o
main.o: main.c main.h sp.h ex.h
... gcc -c -Wall -pedantic main.c
splitline.o: splitline.c sp.h main.h
... gcc -c -Wall -pedantic sp.c
execute.o: ex.c ex.h
... gcc -c -Wall -pedantic ex.c

come devo modificarlo per includere le istruzioni necessarie a rendere l'eseguibile debuggabile?

HKfly
26-05-2010, 19:01
RISOLTO


se volessi settare breakpoints in altri sorgenti del mio programma che comando dovrei dare all'interno di gdb?break <filename>:<line_number>


Se compilo invece col makefile come devo modificarlo per includere le istruzioni necessarie a rendere l'eseguibile debuggabile?Mettendo in ogni riga del makefile in cui chiamo il gcc il flag relativo al debugger.

Loading