Exista interes pentru asa ceva?
Se potriveste in Wiki? Si ca veni vorba de Romanizare, e un cosmar sa scrii asa ceva in Romana. Cum se zice “breakpoint” in Romana? “pointer”? “frame”? “debugger”?
GDB
GDB este un debugger care permite intreruperea executiei binarelor si dezasamblarea codului asamblor prin care sunt implementate.
Prin exemplul urmator o sa modificam valoare returnata de una din functiile programului pe care il rulam in debugger, cu scopul de a observa valoarea schimbata in fereastra pe care o deseneaza.
Folosind nm am aflat de existenta metodei Objective C capacityCurrent care returneaza valoarea capacitatii curente a bateriei.
Vom seta un breakpoint in interiorul GDB.
GDB va intrerupe executia binarului cand functia este chemata si ne va oferi posibilitatea sa executam comenzi.
(gdb) b -[batteryDataClass capacityCurrent] Breakpoint 4 at 0x5399
PC este registrul contor program. El pointeaza intotdeauna catre urmatoarea instructiune care va fi executata.
Sa afisam patru instructiuni din functia noastra.
Prin conventie, pe mac rezultatele unei metode objective c sunt returnate in registrul EAX.
In codul de mai sus EAX este incarcat cu valoarea locatiei de memorie EBP + 8 + 12.
Afisand valoarea din locatia de memorie respectiva, putem observa valoarea de 5280 (afisata de program in cadrul functionarii normale).
comm permite executia unor comenzi la atingerea unui breakpoint.
Mai jos setam continutul locatiei de memorie care reprezinta capacitatea curenta a bateriei la 4200.
(gdb) comm Type commands for when breakpoint 4 is hit, one per line. End with a line saying just "end". >set {int}3841436 = 4200 >end (gdb) c
diciu: poate mai completezi pe acolo la categoria de programare paginile cu ceva texte frumoase despre ce stie si ce face OSX la capitolul programare.
am scris cate ceva, nu cu diacritice. n-am ajuns la Xcode & co.
oricum formularile probabil ca sunt hmm, inovatoare, sper sa ma editeze cineva si sa corecteze unde e cazul.
am scris cu italic unde nu am stiut sa ma exprim in Romana (ex toll-free-bridging).
Si inca ceva: am impresia ca multi considera Wiki ca pe un ziar, revista, sau (horrible dictu! ) o carte, in care ce se scrie asa ramane si rade lumea de eventualele prostii. Nu e asa: orice articol se poate edita, corecta, completa. Daca suntem harnici, poate sa iasa ca un manual. Si nici nu trebuie mare efort, oricum scriem intrebarile si raspunsurile pe forum.
E o vorba care-mi place: share more, live better. Asa e!
Admit de la bun inceput ca am picat de pe nicaieri cu intrebarea asta dar ... cum anume pot adauga/edita wiki-ul? Nu-mi apare nimic in acest sens, cel putin nu asa cum vad pe Wikipedia.org, un link Edit ceva la articole. Trebuie sa am acces special, sau?