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

  • metallmanutza13

    metallmanutz

    13 NİSAN 2007
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007