2010-03-16 26 views
10

UDP üzerinden aldığı verileri görüntüleyen bir Qt programım var. Yaklaşık 30 saniye boyunca iyi çalışıyor ancak bir süre sonra Segmentasyon Hatası veriyor ve çöküyor. Bu 30 saniye de sabit değil. Whats SIGSEGV, Segmentation fault, Qt

ben hata ayıklayıcı kullanılan ve bu var: hata nerede olabilir

Program received signal SIGSEGV, Segmentation fault. 
0x003c6fd4 in ??() from /usr/lib/libQtGui.so.4 

kimse bana söyleyebilir misiniz?

+0

Eğer libQT'nin hata ayıklama sürümünü indirir ve kullanırsanız, stacktrace'de tam olarak nerede kilitlendiğini görebilmeniz gerekir. İpucu, bir rpm sistemindeyseniz 'qt-debug * .rpm' kurun. –

cevap

11

Bu, programınızın kendisine ait olmayan belleğe erişmeye çalıştığı anlamına gelir. Temel olarak, kodunuzda geçersiz bir değer içeren bir işaretçiniz var. Bu hatanın ortak bir kaynağı NULL işaretçisini kaldırıyor.

+0

QT kodunda bir hata olabilir. –

+1

@wic Kodunuzda hiç bir hata bulunmadığını kanıtlayana kadar asla böyle düşünmeyin. –

+1

Qt kodunda hiçbir hata yoktu, açıkçası benim üzerimde aptalca bir hataydı. – user269037

2

Hata ayıklayıcısına ihtiyacınız var (ve hata ayıklama bilgisine sahip ikili dosyalarınız olduğundan emin olun) - çakışma alanında yığın izini kontrol edin. Oldukça fazla kendi kodunuzun bir yerde görüneceğini varsayardım, ve başlangıç ​​noktası budur. Tahsisleri kontrol edin, tampon boyutları…

+0

Yahya hata ayıklayıcı çok yardımcı oldu. Daha önce de çok kullandı. – user269037

1

Veri atadığınız bir dizi ayırdığınızdan emin olun.

Her zaman bu hatayı ayırmadığı için hata yaptım.

char* m_tempBuff; 
*(int*) m_tempBuff = i; 

Son Zaman değişti ve işe yaradı:

Örnek I kullandık

char m_tempBuff[sizeof(int)]; 
*(int*) m_tempBuff = i; 

İyi şanslar! :)