2016-07-11 31 views
6

Son zamanlarda this project ile karşılaştım. Kod büyük ölçüde C dilinde yazılmıştır ve API sadece birkaç C fonksiyonundan oluşmaktadır. Ne yazık ki, proje bazı hatalar içeriyor gibi görünüyor, özellikle "çift bedava veya yolsuzluk" hataları almaya devam ediyorum. Yanlış olanı bulmak için valgrind ve gdb kullanmaya çalışıyorum. Sorun bellek ayırıcıda gibi görünüyor. Ne yazık ki, ilk valgind hatası, bir başlıkta tanımlanan bazı ~ 400 satır uzunluğunda ön işlemci makrosunda gerçekleşir. Ne yazık ki, gdb oluşturulan kodun üzerinde duramaz. Yığın izi de çok kullanışlı değil. Bu tür hatalarla baş etmek için kullanılabilecek herhangi bir teknik var mı?Bir önişlemci makrosuyla hata ayıklama

+3

ile https://wandbox.org/permlink/tFUsKMIXaQj8hhte

Aynı şey çevrimdışı yapabilir, Yerinde olsaydım:

burada bir örneğe bakın? Makroyu bir satır içi işleve dönüştürün. Proje gerçekten çok fazla kullanıyorsa (ve bu beni kodun kullanılmasından korkutmuyor), bir dosyaya ön işlem yapmayı ve sonra da bu dosyayı derleyip hata ayıklamayı deneyebilirim. –

+6

400 + satırları makro Oo! Önişlemci geçişinden (gcc -E seçeneği) sonra c kaynağını oluşturmaya çalışın ve bu dosyadaki kesme noktalarını ayarlayın. – Picodev

+0

Genel bir öncelik sırasını "C yolu" olarak tanımlarlar :( – hfhc2

cevap

1

Çevrimiçi derleyici Wandbox.org, C önişlemcisini denemek için çok kullanışlı olan bir "CPP" moduna sahiptir. gcc -P veya cl.exe /E