SORU
10 EKİM 2010, Pazar


baskı C yığın veya C çağrısı

Dökümü için bir yol aramayı C veya C çalışma süreci her zaman belirli bir fonksiyon denir yığını var mı? Aklımdaki böyle bir şey

void foo()
{
   print_stack_trace();

   // foo's body

   return
}

print_stack_trace benzer şekilde Perl caller çalıştığı.

Ya da şöyle bir şey:

int main (void)
{
    // will print out debug info every time foo() is called
    register_stack_trace_function(foo); 

    // etc...
}

register_stack_trace_function iç kesme çeşit koyduğu bir eser foo çağrıldığında yazdırılacak yığını neden olur.

Böyle bir şey bazı standart C kütüphanesinde var mı?

Linux üzerinde GCC kullanmaya çalışıyorum.


Arka plan

Farklı olarak bu davranışı etkilemez bazı komut satırı anahtarları göre davranan bir test var. Benim kodu farklı bu anahtar tabanlı deniyor sanırım bu sözde rastlantısal sayı üreteci vardır. Anahtarların her biri ile test çalıştırmak ve eğer jeneratör rasgele sayı her biri farklı deseydi görmek mümkün olmak istiyorum.

CEVAP
10 EKİM 2010, Pazar


Linux-sadece bir çözüm için sadece void * bir dizi döndürür backtrace(3) karşılık gelen bir dönüş adresi için bu noktanın her yığın çerçevesi aslında () kullanabilirsiniz. Yararlı bir şey için bu çevirmek için, backtrace_symbols(3) var.

notes section in backtrace(3) dikkat:

Sembol isimleri kullanılamıyor olabilir özel bağlayıcı kullanmadan seçenekler. Sistemleri GNU linker kullanarak, gerekli kullanmaktır -rdynamic linker seçeneği. İsimleri "statik" fonksiyonları açık değildir,unutmayın ve olmayacak geri iz mevcut.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011