PDA

Tam Sürümünü Görmek İçin : gdb ile ilgili sorular


ankakusu
13/11/2007, 00:11
Merhaba,

benim gdb ile ilgili sorularım olacaktı.
gdb'de biz executable dosyayı debug
edebiliyoruz degil mi?


Peki ben exe dosyasını nasıl oluşturacağım
debugger için? obje dosyası exe dosyası
olmuyor değil mi?

Kolay gelsin.


Euclides
13/11/2007, 00:21
evet edebiliyoruz. hayır obje dosyası executable değil.
Extras:
1) eğer gdb ile herhangi bir dosyayı debug etmeye çalışırsan büyük ihtimalle göreceklerin C değil at&t assembly olur.
2) yazdığın bir programı gdb ile debug etmek istiyorsan gcc'nin "-ggdb" flag'i ile derlersen debug information dosyaya eklenir, böylece gdb ile C kodları üzerinden debug yapabilirsin
3) Ayrıca DDD (http://www.gnu.org/software/ddd/) kullanırsan daha kolay olabilir.

ankakusu
13/11/2007, 00:56
Merhaba öncelikle teşekkürler yardım için.

yalnız biraz kafam karıştı.

mesela benim elimde bir tane
obj diye bir obje dosyası var.
$dbg obj

diyorum ve çalışıyor değil mi?
gcc yada g++ seçeneği filan yok.
ama obj dosyasını sonuç olarak
g++ ile oluşturduğum için sanırım
debugger da anlıyordur hangi compiler
olduğunu.

ayrıca man dbg deyip arattım ama
"-ggdb" flagini göremedim. bununla
ilgili bilgiyi nereden bulabilirim acaba?

ikinci olarak assembly olarak göstermek
ne demek oluyor? Debug dediğimiz şeyde
break pointleri koyup satır satır ilerlemiyor
muyuz? bu esnada değişkenlerin içindeki
değerlerin değişimini de izlemek isteyebiliriz.

Peki assembler olarak görüntülenen ne olacak
acaba?

Euclides
13/11/2007, 09:45
mesela benim elimde bir tane
obj diye bir obje dosyası var.
$dbg obj
diyorum ve çalışıyor değil mi?

Hayır

gcc yada g++ seçeneği filan yok.
ama obj dosyasını sonuç olarak
g++ ile oluşturduğum için sanırım
debugger da anlıyordur hangi compiler
olduğunu.

Önceki mesajımda da dediğim gibi
eğer
"g++ blbabal.cpp -ggdb"
gibi derlersen anlar, yok -ggdb eklemezsen anlamaz.

ayrıca man dbg deyip arattım ama
"-ggdb" flagini göremedim. bununla
ilgili bilgiyi nereden bulabilirim acaba?

"man gcc"
yada Goooogle -> "gcc debugging options"

ikinci olarak assembly olarak göstermek
ne demek oluyor? Debug dediğimiz şeyde
break pointleri koyup satır satır ilerlemiyor
muyuz?

Evet ama hangi dil ? Gerçekte "C"'nin bir anlamı yok. Fakat assembly'in var. O yüzden debugger'in hangi asm blocklarının hangi C koduna karşılık geldiğini bilmesi gerekiyor.

Peki assembler olarak görüntülenen ne olacak
acaba?
Kodlar

pulsar
13/11/2007, 22:33
objden gdb sonuç istiyorsan aynı zamanda link etsen yeter ama debug sonucun senin için hüsran olacak olan assambly dizgileri olacaktır. ayrıca gcc derlemelerinizi gdb için yaptintan sonra exacutableden kurtulun dehşet hantaldır -O2 yeter size.. RTFM