PHP iç c koduna hata ayıklama nasıl?

3 Cevap php

Burada kimse denedi ya da mümkün oldu?

Epeyce yıl için PHP kullanarak ama tam olarak yatan c komut asla bilemezsiniz oldum.

Içine gitmek için bir yolu var mı?

3 Cevap

Ben Zend PHP üzerinde hack biraz yaptık. Ben overly clever, bazı insanlar kadar bunu deliberately obfuscated in plain view çağrı olarak gitmek buluyorum. PHP kaynak kodu çok şifreli makro deşifre de ne kadar iyi bağlı olarak, bir zihin değiştiren (veya kırılma) maddedir. Bu çekirdek benim izlenim bu.

Eğer Zend yardımcıları asmak, C ileri acemi / ara bilgi ile çoğu insan bir kez olsun uzantıları Yazma, ancak, is a breeze temel bir uzantısı aracılığıyla alabilir. Örnekler bol da bulunuyor. PHP en iyi bölümlerinden biri yapı sistemi nasıl organize olduğunu, yeni şeylere bırakarak nispeten ağrısızdır. Biraz çalışma ve sabır ile, hemen hemen herhangi bir C kütüphanesi yerine kolayca PHP uzatıldı.

Iyi C tecrübeli değilseniz not size çok fikir verecek, ne de başvurmak için bir iyi bir şeydir (ve önişlemci kötüye ne sınırları), PHP özünde bir bakışta ise Eğer kendi C öğreniyorlar.

Moving On:

Dediğim şey, ya da ne başkası grabbing the code sizi vazgeçirmek ve kendiniz için arayan söylemek zorunda izin vermeyin. Gider hata ayıklama gibi, söyleniyor:

  • Valgrind (Eğer suppressions çok kullandığınız sürece) çok yararlı değildir. PHP (bilgime iyi şekilde) kullandığı kemer optimize edilmiş, glibc yeni sürümleri benzer okur. Yani onun sadece 8 bit ve bir sondaki null kırlangıçlar bile 32 bit okumak için gidiyoruz.

  • Ben GDB PHP ile çok yararlı bulmadım. Sihirli bir sürü iz çok zor olan makrolar bulunmaktadır.

  • Hızla Zend hata günlüğü işlevleri ve iddiaların kendi sürümünü göreceksiniz. Bu kullan, printf () hata ayıklama senin bir CLI uygulaması hata ayıklama sürece oldukça fazla işe yaramaz.

  • Çöp toplama Valgrind en masifi gibi araçlar kullanılarak zaman garip şeyleri görmek yapabilirsiniz. PHP yığın kullanımını profilleme henüz keşfedilmiş değil bir sanattır.

Son olarak, kimse onların dil kaputunun altında bakmak görmek için onun her zaman güzel söylemek istiyorum. SO PHP çekirdeğini de-şaşırtmak yardımcı bazı sorular kullanabilirsiniz, böylece gidip daha fazla göndermekten çekinmeyin :)

Ayrıca, unutmayın, Zend sadece sahte olmadığını makes php. Eğer kabul edilmesi için umut olmadığını Zend ile uyumluluk şeyden olsa, herkes hala kendi şey yapmak serbesttir.

Ben PHP (nor extensions) C kodu ayıklanmış hiç, ama ben bazen PHP uzantıları çöker durumlarda, backtraces elde ettik.

Bu sayfa, bu konuda yardımcı olabilir: Generating a gdb backtrace.

Oradan başlayarak, belki daha uzağa gitmek mümkün olacak ...

PHP açık kaynak kodlu olduğunu bilmiyorum gibi sorular bazı sesler, size download the complete source code bunu ve tüm C fonksiyonları ile bakabilirsiniz. Eğer Backtracing ve hata ayıklama yeteneği isterseniz, Pascal MARTIN dediğini yapmak zorundayız.