Difference between revisions of "GDB ar QUEMU"

From DiLab
Jump to: navigation, search
(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 termināļa režīmā==
==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 18:49, 16 March 2015

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ā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:

  • 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

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"