Difference between revisions of "GDB ar QUEMU"
(→GDB termināļa režīmā) |
(→GDB dažas komandas) |
||
Line 39: | Line 39: | ||
|+ |
|+ |
||
| continue |
| continue |
||
| |
| c |
||
| Turpināt (sākt) programmas izpildi |
| Turpināt (sākt) programmas izpildi |
||
|- |
|||
| step |
|||
| s |
|||
| Izpildīt tekošo komandu rindu pirmkodā. Ja tajā ir funkciju izsaukumi, iet iekšā un apstāties tur. |
|||
Var būt papildus parametrs n, kas norada cik reizes tā darīt. |
|||
|- |
|||
| next |
|||
| n |
|||
| Izpildīt tekošo komandu rindu pirmkodā. Ja gadās funkcijas izsaukums, izpildīt funkciju bez apstāšanās. |
|||
Var būt papildus parametrs n, kas norada cik reizes tā darīt. |
|||
|- |
|- |
||
| break <x> |
| break <x> |
Revision as of 17:55, 16 March 2015
Par šo stāstīts lekcijā "Programmu izstrādes vide".
Contents
Ports
Izvēlamies portu, pa kuru GBB runās ar QUEMU. Vēlams ņemt savu identifikātoru + 20000. Šajos pierakstos piemēra pēc lietosim 1234, bet jums jālieto savs ports!
GDB termināla režīmā
Pieņemsim, ka vēlaties atkļūmot savu programmu prog1.
1. startējam gdb, fonā:
arm-linux-gnueabi-gdb prog1 &
2. Startējam quemu, arī fonā, norādot portu:
qemu-arm -g 1234 prog1 &
3. Paceļam gdb priekšplānā
fg %arm-linux-gnueabi-gdb
4. No gdb vides sasienam gdb ar quemu lietojot to pašu portu
target remote localhost:1234
5. Izpildam gdb komandas atkļūmošanai: continue, step, next, break, delete, info registers un tamlīdzīgi.
continue
GDB dažas komandas
GDB komanda | Īsais variants | Apraksts |
continue | c | Turpināt (sākt) programmas izpildi |
step | s | Izpildīt tekošo komandu rindu pirmkodā. Ja tajā ir funkciju izsaukumi, iet iekšā un apstāties tur.
|
next | n | Izpildīt tekošo komandu rindu pirmkodā. Ja gadās funkcijas izsaukums, izpildīt funkciju bez apstāšanās.
Var būt papildus parametrs n, kas norada cik reizes tā darīt. |
break <x> | b <x> |
Uzstādīt "breakpoint" uz <x>, kur <x> var būt:
|
info registers | i r | reģistru saturs. Var pielikt klāt reģistra nosaukumu |
DDD - grafiskais atkļūmotājs
Līdzīgi kā iepriekšējais. Tikai gdb vietā jālieto ddd:
ddd --debugger arm-linux-gnueabi-gdb prog1 &
Aliasi ātrākai izpildei
Viens veids, ka vienkāršot palaišanu ir uztaisīt aliasa komandu un ievietot to .bash_alias failā. Piemeram, ddd atkļūmotājam to varētu darīt šādi:
function debug() { id=‘id -u‘ id=$(($id+20000)) echo "target remote 127.0.0.1:$id" > ~/.gdbinit (sleep 1; ddd --debugger arm-linux-gnueabi-gdb $1) & qemu-arm -g $id $@ }
Tad pēc .bash_alias izpildes (kas vienmēr notiek arī ielogojoties terminālī) vares palaist debugeri vienkarši ar "debug prog1"