GDB ar QUEMU

From DiLab
Revision as of 15:19, 15 April 2013 by Leo (talk | contribs) (Startējam rīkus)
Jump to: navigation, search

Par šo stāstīts lekcijā "Programmu izstrādes vide".

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āļa 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


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"