This shows you the differences between two versions of the page.
|
so:laboratoare:resurse:gdb [2013/05/22 01:59] ghennadi.procopciuc [Depanarea unui proces] |
so:laboratoare:resurse:gdb [2015/03/18 22:55] (current) marius.ungureanu93 Explicitly mention function results, fix some diacritics |
||
|---|---|---|---|
| Line 60: | Line 60: | ||
| Câteva din comenzile de bază în ''gdb'' sunt: | Câteva din comenzile de bază în ''gdb'' sunt: | ||
| - | * **breakpoint** - primeşte ca argument un nume de funcţie (ex: main), un număr de linie şi, eventual, un fişier (ex: break sursa.c:50) sau o adresă (ex: break *0x80483d3). | + | * **b[reakpoint]** - primeşte ca argument un nume de funcţie (ex: main), un număr de linie şi, eventual, un fişier (ex: break sursa.c:50), o funcţie (b sursa.c:my_function) sau o adresă (ex: breakpoint *0x80483d3). |
| - | * **next** - va continua execuţia programului până ce se va ajunge la următoarea linie din codul sursă. Dacă linia de executat conţine un apel de funcţie, funcţia se va executa complet. | + | * **n[ext]** - va continua execuţia programului până ce se va ajunge la următoarea linie din codul sursă. Dacă linia de executat conţine un apel de funcţie, funcţia se va executa complet. |
| - | * **step** - dacă se doreşte şi inspectarea funcţiilor. | + | * **s[tep]** - dacă se doreşte şi inspectarea funcţiilor. |
| + | * **fin[ish]** - dacă se doreşte ieşirea din funcţia curentă. | ||
| Folosirea acestor comenzi este exemplificată mai jos: | Folosirea acestor comenzi este exemplificată mai jos: | ||
| Line 157: | Line 158: | ||
| </columns> | </columns> | ||
| - | ***print** - cu ajutorul acesteia se pot afişa valorile variabilelor din funcţia curentă sau a variabilelor globale. ''print'' poate primi ca argument şi expresii complicate (dereferenţieri de pointeri, referenţieri ale variabilelor, expresii aritmetice, aproape orice expresie C validă). În plus, ''print'' poate afişa structuri de date precum ''struct'' şi ''union''. | + | ***print** - cu ajutorul acesteia se pot afişa valorile variabilelor din funcţia curentă sau a variabilelor globale. ''print'' poate primi ca argument şi expresii complicate (dereferenţieri de pointeri, referenţieri ale variabilelor, expresii aritmetice, aproape orice expresie C validă). În plus, ''print'' poate afişa structuri de date precum ''struct'' şi ''union'' sau evalua funcţii şi întoarcerea rezultatului lor. |
| <columns 100% 40% -> | <columns 100% 40% -> | ||
| Line 174: | Line 175: | ||
| (gdb) print b | (gdb) print b | ||
| $2 = 2 | $2 = 2 | ||
| + | (gdb) print f(a, b) | ||
| + | $3 = 3 | ||
| (gdb) print c | (gdb) print c | ||
| - | $3 = 1073792080 | + | $4 = 1073792080 |
| (gdb) next | (gdb) next | ||
| 7 return c; | 7 return c; | ||
| (gdb) print c | (gdb) print c | ||
| - | $4 = 3 | + | $5 = 3 |
| (gdb) finish | (gdb) finish | ||
| Run till exit from #0 f (a=1, b=2) at add.c:7 | Run till exit from #0 f (a=1, b=2) at add.c:7 | ||
| Line 221: | Line 224: | ||
| </code> | </code> | ||
| </columns> | </columns> | ||
| - | |||
| ===== Depanarea unui proces ===== | ===== Depanarea unui proces ===== | ||