GDB

2011-10-12 25 views
7

kullanarak çekirdek dökümü dosyasının boyutu nasıl sınırlanır ARM9 panosunda gömülü bir uygulama çalıştırıyorum, burada toplam flaş boyutu yalnızca 180MB'dir. Ben gdb çalıştırabiliyor, ama benGDB

(gdb) generate-core-dump

yaptığımda ben de ulimit -c 50000 set ama hala çekirdek dökümü bu sınırı aşarsa

warning: Memory read failed for corefile section, 1048576 bytes at 0x4156c000. 
warning: Memory read failed for corefile section, 1048576 bytes at 0x50c00000. 
Saved corefile core.5546 
The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal] 
Tamper Detected 
**********OUTSIDE ifelse 0********* 
length validation is failed 

bir hata alıyorum. Dosya boyutunu kontrol etmek için ls -l yaptığımda 300 MB'nin üzerindedir. Bu durumda çekirdek çöplüğün boyutunu nasıl sınırlamalıyım?

cevap

8

GDB, 'ulimit -c' ye saygı göstermez, yalnızca çekirdek yapar.

GDB'yi hedef kartta mı, yoksa bir geliştirme ana bilgisayarında mı (gdbserver'ı hedefte kullanıyor) çalıştırdığınız açık değil. Muhtemelen ikinci nesneyi kullanmalısınız, bu da tam çekirdek dökümü toplamanızı sağlayacaktır.

Kesilmiş çekirdek çöplükleri bir sıkıntıdır, sık sık sorunun hatalarını ayıklamak için gereken bilgileri içermeyecektir. Kabuk rc-dosyasında

+0

Hedef panosunda gdb çalıştırıyorum. Gdbserver'ı da kullanabilirim, ancak çökme kolayca tekrarlanamaz olduğundan, ilk seçenekle gidiyorum. –

+1

Maalesef gdb'yi veya gdbserver'ı nasıl kolayca yeniden üretilebiliyor olsun ya da olmasın ne yapmalıyım? – shodanex

+0

@shodanex - istemci-sunucu modelini kullanarak çekirdek, çekirdek dosya için sadece 180MB kullanılabilir alana sahip gömülü sistemde değil, "ana bilgisayar" dosya sisteminde toplanabilir. Muhtemelen ana sistem tam bir HDD'ye sahiptir ve çok daha büyük bir çekirdek dosyayı kaydedebilir. – Peter

0

ulimit -c ne zaman kullandınız? Bir çekirdek dökümü oluşturduğunuz programı başlatmadan önce ve aynı oturumun içinde kullanılmalıdır.

+0

GDB'yi çalıştırmadan önce ulimit'i ayarlamıştım. /etc/rc.d/init.d/startup adresine 'ulimit -c 50000' yazdım ve 'ulimit -a' kullanarak manuel olarak kontrol ettim ve doğru şekilde ayarlandı. –

4

:

limit coredumpsize 50000    # or whatever limit size you like 
GDB

dahil her şey sınırını ayarlamak gerekir

Not: 0 olarak ayarlarsanız

, emin olun edebilirsiniz Ana dizin, çekirdek döküm dosyaları ile karıştırılmamış.