Difference between revisions of "GDB ar QUEMU"

From DiLab
Jump to: navigation, search
(GDB dažas komandas)
(GDB dažas komandas)
Line 68: Line 68:
| info registers
| info registers
| i r
| i r
| reģistru saturs. Var pielikt klāt reģistra nosaukumu
| Reģistru saturs. Var pielikt klāt reģistra nosaukumu.
|-
|-
| set step mode on
|
| Uzstādīt režīmu, kurā ar "step" iet iekšā arī kodā, par kuru nav atkļūdošanas (debug) informācijas.

Uzstādot "on" vietā "off" šis režīms tiek atcelts.
|}
|}



Revision as of 18:59, 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 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.


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> 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.
set step mode on Uzstādīt režīmu, kurā ar "step" iet iekšā arī kodā, par kuru nav atkļūdošanas (debug) informācijas.

Uzstādot "on" vietā "off" šis režīms tiek atcelts.

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"