Bozuk hata ayıklama Nasıl yığın çerçevesi - GDB? | Netgez.com
SORU
21 Mart 2012, ÇARŞAMBA


Bozuk hata ayıklama Nasıl yığın çerçevesi - GDB?

İzleme aşağıdaki yığın var. Bir şey hata ayıklama için yararlı yapmak mümkün mü?

Program received signal SIGSEGV, Segmentation fault.
0x00000002 in ?? ()
(gdb) bt
#0  0x00000002 in ?? ()
#1  0x00000001 in ?? ()
#2  0xbffff284 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) 

Biz ** 4, ve bir yığın izleme zaman kodu nereden başlayacağımızı çok yararlı değil mi?

NOT: ben kodu, post, o YÜZDEN uzmanlar bana cevap verecek. Bu KADAR yol ve cevabını bulmak kendi kendime istiyorum, burada kodu gönderiyorum. Özür dilerim.

CEVAP
21 Mart 2012, ÇARŞAMBA


Bu sahte adresler 0x00000002 ve benzeri) aslında PC deÄŸerleri, SP deÄŸerleri deÄŸil. SEGV bu tür yerine geldiÄŸinde, çok küçük sahte BÄ°LGÄ°SAYAR adresi, zaman ™ sahte bir iÅŸlev iÅŸaretçisi aracılığıyla arama sayesinde. C sanal çaÄŸrıları sanal bir çaÄŸrı ile herhangi bir sorun aynı ÅŸekilde tezahür böylece iÅŸlev iÅŸaretçileri ile uygulanan, unutmayın.

Dolaylı arama talimatı sadece üzerine Ara sonra PC yığına iter ve sonra hedef değer () bu durumda sahte PC ayarlar, eğer öyleyse bune oldu, kolayca el ile kapatma yığın PC haşhaş ile geri alabilirsiniz. 32-bit x 86 kod yap:

(gdb) set $pc = *(void **)$esp
(gdb) set $esp = $esp   4

64-bit x 86 kodu ile gerekir

(gdb) set $pc = *(void **)$rsp
(gdb) set $rsp = $rsp   8

Sonra, bt ve kodu gerçekten nerede olduğunu anlamaya gerekir.

Diğer hata yığını üzerine bağlı olacak zaman, %1, genellikle bir dizi yığında saklı taşan tarafından. Bu durumda, valgrind gibi bir aracı kullanarak bu duruma daha fazla açıklık elde etmek mümkün olabilir

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Best Quality Cartoons

    Best Quality

    10 ÅžUBAT 2014
  • bobono1baby

    bobono1baby

    14 AÄžUSTOS 2011
  • wwjoshdew

    wwjoshdew

    1 AÄžUSTOS 2007