2013-08-17 16 views
5

Ho un programma C++ che eseguo passando una stringa con esso.Programma debug basato su C con gdb

g++ -o a main.cpp -lpthread 

ed eseguirlo con ./a "Good nice"

Ma come il debug con gdb? main.cpp chiamando le funzioni da altri file che sono inclusi in esso.

gdb ./a "Good nice" 

prende "-" come file e non dice tale file!

Voglio eseguire il debug linea per linea!

+0

possibile duplicato del [Passaggio di argomenti per programmare correre attraverso gdb] (http://stackoverflow.com/questions/4521015/passing-arguments-to-program- run-through-gdb) – Mark

+0

Compilate anche il vostro programma con '-g' altrimenti questo è tutto per niente – aaronman

risposta

6

Utilizzare l'opzione --args di gdb:

gdb --args ./a "Good nice" 

anche aggiungere l'opzione -g alla chiamata del compilatore, perché altrimenti gdb non sarà in grado di collegare il file eseguibile con il codice sorgente:

g++ -g -o a main.cpp -lpthread 
+0

anche lui deve compilare con' -g' – aaronman

+0

@aaronman yes, per essere in grado di usare il debugger a tutti. Ma questa domanda non riguardava il problema degli argomenti del programma? – cmaster

+0

Se ti mostra come lo sta compilando e sai che è sbagliato e non glielo dici, la tua risposta è utile? – aaronman

3

gdb ./prog ->set argsstring -> Esegui .

+0

Questo eseguirà l'intero programma e darà l'output. Voglio il debug linea per linea! – user123

5

Usa gdb senza discutere

gdb ./a 

Poi, nel gdb, prima di eseguire il programma di

set args "Good nice" 

E si può vedere quali argomenti si imposta, utilizzare

show args 

Vedi here per dettaglio.

+0

Una nota a margine: Se nel caso in cui hai dubbi nel mezzo che argomenti hai impostato, usa 'show args' – kingsmasher1

+0

@ kingsmasher1 Esattamente, lo aggiungo alla risposta. –

+0

dopo la procedura sopra riportata quando premo 's' per avviare il debug di riga per linea che fornisce' il programma non viene eseguito ' – user123

3

scelta Antera è fornire argomento dopo run

$gdb ./a 
run "Good nice" 
+0

Questo mostra direttamente l'output finale, nessun debug line-line! – user123