SORU
18 EYLÜL 2008, PERŞEMBE


Nasıl hata Ayıklama Seçeneği-g İkili Yürütülebilir değiştirir Mi?

C/C kodu yazarken, ikili çalıştırılabilir hata ayıklama için hata ayıklama seçeneği derleyici/bağlayıcı etkinleştirilmesi gerekir. GCC seçeneği-g durumunda. Hata ayıklama seçeneği etkinleştirildiğinde, nasıl ikili yürütülebilir etkiler? Ek veri hata veren dosya içinde saklanan bir fonksiyonu yok gibi?

CEVAP
18 EYLÜL 2008, PERŞEMBE


-g derleyici yürütülebilir sembol tablo bilgileri saklamak için söyler. Diğer şeyler arasında, bu içerir:

  • sembol isimleri
  • türü sembolleri için bilgi
  • sembollerin nereden geldiğini dosya ve satır numaraları

Hata kaynağı belli çizgiler ile ilişkilendirmek talimatları sembollerin çıkış anlamlı isimler için bu bilgileri kullanın.

Bazı Derleyiciler için,- g temin edecek bazı en iyi duruma getirme devre dışı bırakın. Örneğin, ıcc açıkça-Ç belirtmek sürece-g[123]- O0 varsayılan optimizasyon düzeyini ayarlar. -Eğer O[123] kaynağı olsa da, yığın izleme engelleyen iyileştirmeleri hala (yığın çerçeveler çerçeve işaretçiler örneğin sıyırma. devre dışı bırakılacak Bu performansı üzerinde etkisi sadece bir küçük) vardır.

Bazı Derleyiciler, -g simgeler (talimat yeniden sıralama, döngü çözümü, satır içi uygulaması vb.) nereden geldiğini karıştırmayın bu en iyi duruma getirme devre dışı bırakır. Eğer optimizasyon ile hata ayıklamak istiyorsanız, gcc-g3 biraz etrafında almak için kullanabilirsiniz. Ek hata ayıklama bilgisi makrolar, açılımları ve inlined olabilir işlevleri hakkında eklenecektir. Bu hata ve performans araçları orijinal kaynak kodu optimize göster izin verebilirsiniz, ama iyi bir çaba. Bazı iyileştirmeler gerçekten kodu kırmaya.

Daha fazla bilgi için DWARF hata ayıklama biçimi aslında ELF ile birlikte gitmek için tasarlanmış (Linux ve diğer OS için ikili biçimde) bir göz atın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • disneychannel

    disneychanne

    19 ŞUBAT 2006
  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008