2013-08-17 11 views
5

Mam program C++, który uruchamiam, przekazując mu ciąg znaków.Program oparty na argumencie debugowania C z gdb

g++ -o a main.cpp -lpthread 

i wykonać go z ./a "Good nice"

Ale jak to debugować z gdb? main.cpp wywoływanie funkcji z innych plików, które są w nim zawarte.

gdb ./a "Good nice" 

przyjmuje "-" jako pliki i nie mówi o żadnym pliku!

Chcę debugować linię po linii!

+0

możliwym duplikatu [Przekazywanie argumentów do programu realizowanego przez gdb] (http://stackoverflow.com/questions/4521015/passing-arguments-to-program- run-through-gdb) – Mark

+0

Również skompiluj swój program za pomocą '-g' w przeciwnym razie wszystko to na darmo – aaronman

Odpowiedz

6

Użyj opcji gdb --args:

gdb --args ./a "Good nice" 

także dodać opcję -g do wywołania kompilatora, bo inaczej gdb nie będzie w stanie połączyć plik wykonywalny z kodem źródłowym:

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

musi również skompilować z' -g' – aaronman

+0

@aaronman tak, aby móc w ogóle korzystać z debuggera. Ale czy to nie było pytanie o problem z programami? – cmaster

+0

Jeśli pokazuje, w jaki sposób go kompiluje i wiesz, że to źle, a ty mu nie mówisz, czy twoja odpowiedź jest przydatna? – aaronman

3

gDB ./prog ->zestaw argsstring ->run.

+0

Spowoduje to wykonanie całego programu i wygenerowanie wyniku. Chcę debugować linia po linii! – user123

5

Zastosowanie gdb bez argumentów

gdb ./a 

Następnie w gdb, przed uruchomieniem programu

set args "Good nice" 

i można zobaczyć, jakie argumenty można ustawić, użyj

show args 

Zobacz here dla Szczegół.

+0

Uwaga dodatkowa: Jeśli masz wątpliwości co do tego, które ustawienia ustawiłeś, użyj 'show args' – kingsmasher1

+0

@ kingsmasher1 Dokładnie, dodaję to do odpowiedzi. –

+0

po powyższej procedurze, gdy naciśniesz 's', aby rozpocząć debugowanie linii po linii, daje to, że' program nie jest uruchamiany ' – user123

3

Anther wybór jest dostarczenie argumentu po run

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

To bezpośrednio pokazuje końcowe wyjście, bez debugowania linii po linii! – user123

Powiązane problemy