2009-04-26 34 views
6

GDB'de yeni başlayan biriyim ve doğru şekilde çalıştım. Ancak, bunun büyük projelerde nasıl kullanıldığını merak ediyorum. Yapımın makefile ve g ++ kullanılarak yapıldığı bir projem var. GDB'nin çalışması için, hata ayıklama sembolleriyle derlememiz gerekiyor, sağ (g ++ -g dosyaları)?gdb kullanarak hata ayıklama - En iyi yöntemler

  1. Soru Ben bir hata ayıklama yapı gibi yapmak ayıklama yapmak, böylece, "debug" gibi makefile şey Yeni bir hedef oluşturmak gerekir mi. Bu en iyi uygulama mı?

  2. Giderim, sadece foo.cpp hata ayıklamak gerekir ve sadece ana dahil olmak üzere tüm program oluşturmanın dışında hata ayıklama sembolleri üretmek mümkün mü?

Herhangi bir düşünce?

cevap

2
  1. hatta, vs) kodu deneyin ve optimize ayıklama (-O1, O2 gerekebilir, gerekli değil; bırakmaz neden - üzerinde gr? bültenleri için, her zaman sadece ikili üzerinde şerit çalıştırabilirsiniz.

  2. Evet. -g sadece bu dosyayı oluşturun. Ben büyük bir fark arasındaki yoktur sanmıyorum

+0

"Bültenler için ne demek istediniz? Açıklayabilir misin? –

+0

http://www.sourceware.org/binutils/docs-2.16/binutils/strip.html -g ile kodunuz, kodlamadan biraz daha büyük olacaktır. Hata ayıklama sembollerini kolayca eklemenin bir yolu yoktur, ancak bunları şeritle kolayca kaldırabilirsiniz. – Mikeage

0

gdb sembolsüz çalışır; o zaman çıktının daha az kullanışlı olması o zaman.

  1. Bu bir tercih meselesidir. Hata ayıklama modunda varsayılan olarak her şeyi yapıyorum ve gerektiğinde sürüm yap.
  2. Evet. bazen -g (ile bina her zaman göz önünde bulundurmak isteyebilirsiniz rağmen
1

Büyük, orta veya küçük projelerde gdb kullanımı, ancak büyük projeler için Hata ayıklama bilgisi, nesnenin ve yürütülebilir dosyaların boyutunu artırdığından, yapı için gereken alan miktarını dikkate almalısınız.

  1. İlk başta tüm çözümün hata ayıklama ihtiyacını önceden tahmin ederseniz, gelecekte kararınızdan etkilenirsiniz. Yapı, hata ayıklama bilgisi olmadan veya yapılmadan yapılamadığında her zaman iyidir, bu yüzden derleme komutlarınızı dikkatlice yazın.
  2. Evet, ancak önceki cevabımı düşünün. Bazen sorun, hata ayıklama bilginiz olmayan bir modülden geliyor olabilir. Ben her zaman mümkün olan en ayrıntılı hata ayıklama bilgi ile inşa çalışmak burada büyük projelerde
2

(gibi gdb makrolar erişim için yerli gdb formatında ya da '-gdwarf-2 -g3' için '-ggdb3').

Hata ayıklama işlemi bittiğinde, tüm hata ayıklama bilgilerini ikili dosyalardan çıkarmak için 'şerit' komutunu kullanırız.

gcc -ggdb3 blah.c -o blah 
strip blah 
0

Hep ayıklama sürümü bir yerlerde kaydedilen olabilir ve hiç gerekiyorsa sembol bilgileri, senin soyulmuş/sürümünü ayıklama sonra, sadece "dosya/yolu" gidebilir ve gdb yeniden bağlamak Bu hedefe ait sembolleri tekrar okuyacaktır. Ayrıca, soyulmuş bir dosyaya bağlanacak sembol bilgilerini yapılandırmak için "sembol dosyası/yol" kullanabilirsiniz.

İlgili konular