Difference between revisions of "GDB ar QUEMU"
|  (→Startējam rīkus) |  (→GDB termināļa režīmā) | ||
| Line 6: | Line 6: | ||
| Šajos pierakstos piemēra pēc lietosim 1234, bet jums jālieto savs ports! | Šajos pierakstos piemēra pēc lietosim 1234, bet jums jālieto savs ports! | ||
| ==GDB  | ==GDB termināla režīmā== | ||
| Pieņemsim, ka vēlaties atkļūmot savu programmu prog1. | Pieņemsim, ka vēlaties atkļūmot savu programmu prog1. | ||
| Line 30: | Line 30: | ||
|  continue |  continue | ||
| == GDB dažas komandas == | |||
| {| border=1 | |||
| | GDB komanda  | |||
| | Īsais variants  | |||
| | Apraksts | |||
| |+ | |||
| | continue | |||
| | | |||
| | Turpināt (sākt) programmas izpildi | |||
| |- | |||
| | break <x> | |||
| | b <x> | |||
| |  | |||
| Uzstādīt "breakpoint" uz <x>, kur <x> var būt: | |||
| * rindas_numurs tekošajā pirmkoda failā | |||
| * fails:rindas_numurs | |||
| * funkcijas_vārds | |||
| * fails:funkcijas_vārds | |||
| * *adrese | |||
| *...un citi varianti | |||
| |- | |||
| | info registers | |||
| | i r | |||
| | reģistru saturs. Var pielikt klāt reģistra nosaukumu | |||
| |- | |||
| |} | |||
| ==DDD - grafiskais atkļūmotājs== | ==DDD - grafiskais atkļūmotājs== | ||
Revision as of 17:49, 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 | Turpināt (sākt) programmas izpildi | |
| 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"
