Difference between revisions of "GDB ar QUEMU"

From DiLab
Jump to: navigation, search
(Startējam rīkus)
(Startējam rīkus)
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 termināļa režīmā==
==Startējam rīkus==


Pieņemsim, ka vēlaties atkļūmot savu programmu prog1.
Pieņemsim, ka vēlaties atkļūmot savu programmu prog1.
Line 17: Line 17:


qemu-arm -g 1234 prog1 &
qemu-arm -g 1234 prog1 &

3. Paceļam gdb priekšplānā
3. Paceļam gdb priekšplānā


Line 26: Line 26:
target remote localhost:1234
target remote localhost:1234


5. Izpildam gdb komandas atkļūmošanai: continue, step, next, breakpoint, info registers un tamlīdzīgi.
5. Izpildam gdb komandas atkļūmošanai: continue, step, next, break, delete, info registers un tamlīdzīgi.


continue
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"

Revision as of 16:19, 15 April 2013

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"