Kullanım
perlbug
perlbug [ -v ] [ -a address ] [ -s subject ] [ -b body | -f inputfile ] [ -F outputfile ]
[ -r returnaddress ] [ -e editor ] [ -c adminaddress | -C ] [ -S ] [ -t ] [ -d ] [ -h ]
[ -T ]
perlbug [ -v ] [ -r returnaddress ]
[ -ok | -okay | -nok | -nokay ]
perlthanks
Açıklama
Bu program, perl5 ve onunla birlikte gelen modüller hakkında hata raporları (ve teşekkür notları) oluşturmanıza yardımcı olmak için tasarlanmıştır.
Çoğu durumda, herhangi bir özel argüman olmadan komut satırından etkileşimli olarak çalıştırabilir ve yönergeleri takip edebilirsiniz.
Standart dışı bir portta (standart dağıtımın parçası olmayan bir portta), ikili (binary) bir dağıtımda veya çekirdek olmayan bir modülde (Tk, DBI vb. gibi) bir hata bulduysanız, hataları bildireceğiniz doğru yeri belirlemek için lütfen o dağıtımla birlikte gelen belgelere bakın.
Hata raporları, https://github.com/Perl/perl5/issues adresindeki GitHub sorun takipçisine gönderilmelidir. perlbug@perl.org adresi artık otomatik olarak talep (ticket) açmamaktadır. Raporunuzu hazırlamak ve bir dosyaya kaydetmek için bu aracı kullanabilir, ardından bu dosyayı sorun takipçisine gönderebilirsiniz.
Uç durumlarda, sisteminizde perlbug bir hata raporu hazırlarken size yol gösterecek kadar iyi çalışmayabilir. Bu durumlarda, sorun raporunuza dahil etmek üzere sistem yapılandırma bilgilerini almak için perlbug -d veya perl -V komutlarını kullanabilirsiniz.
Bir hata bildirirken, lütfen bu kontrol listesinden geçin:
Hangi Perl sürümünü çalıştırıyorsunuz? Bunu öğrenmek için komut satırına "perl -v" yazın.
Perl'ün en son yayınlanan sürümünü mü çalıştırıyorsunuz? Bunu öğrenmek için http://www.perl.org/ adresine bakın. En son yayınlanan sürümü kullanmıyorsanız, lütfen hatanızı en son kararlı sürümde yeniden üretmeyi deneyin.
Perl'ün eski sürümlerindeki hatalarla ilgili raporların, özellikle de Perl'ün mevcut kararlı sürümünü test etmediğinizi gösteren raporların, Perl'ü derleyen ve bakımını yapan gönüllülerden, mevcut sürümdeki hatalarla ilgili raporlara göre daha az ilgi görme olasılığının yüksek olduğunu unutmayın.
Karşılaştığınız şeyin bir hata olduğundan emin misiniz? Aldığımız hata raporlarının önemli bir kısmının Perl'de belgelenmiş özellikler olduğu ortaya çıkmaktadır. Perl dağıtımıyla birlikte gelen belgelere göz atarak karşılaştığınız sorunun kasıtlı olmadığından emin olun.
Perl belgelerinin muazzam hacmi göz önüne alındığında bu önemsiz bir iş değildir, ancak karşılaştığınız davranışın yanlış olduğunu gösteren bir belgeye işaret edebilirseniz, sorununuzun daha fazla ilgi görmesi olasıdır. Yeni (ve deneyimli) Perl programcılarının düştüğü yaygın tuzaklara yönelik ipuçları için perldoc perltrap ile başlamak isteyebilirsiniz.
Karşılaştığınız bir hata mesajının anlamından emin değilseniz, açıklama için perldoc perldiag komutunu kullanın. Mesaj perldiag içinde yoksa, muhtemelen Perl tarafından üretilmemiştir. Bunun yerine işletim sisteminizin belgelerine başvurarak şansınızı deneyebilirsiniz.
UNIX dışı bir platformdaysanız, bazı özellikler uygulanmamış olabileceğinden veya farklı çalışabileceğinden perldoc perlport komutuna bakın.
Perl hata ayıklayıcısını kullanarak neyin yanlış gittiğini anlayabilirsiniz. Hata ayıklayıcının nasıl kullanılacağı hakkında bilgi edinmek için perldoc perldebug komutuna bakın.
Uygun bir test senaryonuz var mı? Hatanızı yeniden üretmek ne kadar kolaysa, düzeltilme olasılığı o kadar yüksektir -- sorununuzu kimse tekrarlayamazsa, muhtemelen ele alınmayacaktır.
İyi bir test senaryosu şu özelliklerin çoğuna sahiptir: kısa, basit kod; harici komutlara, modüllere veya kütüphanelere az bağımlılık; platforma bağlı olmayan kod (platforma özgü bir hata olmadığı sürece); açık, basit belgeler.
İyi bir test senaryosu, neredeyse her zaman Perl'ün test paketine dahil edilmek üzere iyi bir adaydır. Vaktiniz varsa, test senaryonuzu standart test paketine kolayca dahil edilebilecek şekilde yazmayı düşünün.
İlgili tüm bilgileri dahil ettiniz mi? Varsa tam hata mesajlarını eklediğinizden emin olun. "Perl bir hata verdi" tam bir hata mesajı değildir.
Eğer bir core dump (veya eşdeğeri) alırsanız, hata raporuna dahil etmek üzere bir yığın izi (stack trace) oluşturmak için bir hata ayıklayıcı (dbx, gdb vb.) kullanabilirsiniz.
NOT: Perl'ünüz hata ayıklama bilgisiyle (genellikle -g) derlenmediyse, yığın izinin kullanımı biraz zor olabilir çünkü büyük olasılıkla yalnızca işlev adlarını içerecek ve argümanlarını içermeyecektir. Mümkünse, Perl'ünüzü hata ayıklama bilgisiyle yeniden derleyin ve çökmeyi ve yığın izini yeniden üretin.
Hatayı açık ve anlaşılır bir İngilizceyle açıklayabilir misiniz? Yeniden üretilebilir bir hatayı anlamak ne kadar kolaysa, düzeltilme olasılığı o kadar yüksektir. Soruna dair sağlayabileceğiniz her türlü içgörü büyük ölçüde yardımcı olacaktır. Başka bir deyişle, sorunu (yapabildiğiniz ölçüde) analiz etmeye çalışın ve keşiflerinizi bildirin.
Hatayı kendiniz düzeltebilir misiniz? Eğer öyleyse, bu harika bir haber; yamalı hata raporları, yamasız olanlara göre önemli ölçüde daha fazla ilgi ve alaka görme olasılığına sahiptir. Lütfen yamanızı perldoc perlhack içinde açıklandığı gibi GitHub Pull Request iş akışı aracılığıyla gönderin. Yamaları perl5-porters@perl.org adresine de gönderebilirsiniz. Yama gönderirken, mümkünse "git format-patch" kullanarak oluşturun, ancak "diff -pu" ile oluşturulmuş bir birleştirilmiş diff (unified diff) de neredeyse aynı derecede iş görecektir.
Yamanız, değişiklik talepleriyle veya düzeltmeniz hakkında daha ayrıntılı açıklama talepleriyle geri gönderilebilir.
Yüksek kaliteli yamalar oluşturmak için birkaç ipucu:
Yamanın tersine çevrilmediğinden emin olun (diff için ilk argüman genellikle orijinal dosyadır, ikinci argüman ise değiştirdiğiniz dosyadır). Yamanızı göndermeden önce "git am" veya "patch" programı ile uygulayarak test ettiğinizden emin olun. Yama yapmaya çalıştığınız kodla aynı stili takip etmeye çalışın. Yamanızın gerçekten çalıştığından emin olun (yama yaptığınız şey Perl'ün test paketi kapsamındaysa "make test" çalıştırın).
Teşekkür notu göndermek için "perlbug" kullanabilir misiniz? Evet, bunu ya "-T" seçeneğini kullanarak ya da programı "perlthanks" olarak çağırarak yapabilirsiniz. Teşekkür notları iyidir. İnsanları gülümsetir.
Lütfen sorun başlığınızı bilgilendirici yapın. "bir hata" (a bug) bilgilendirici değildir. "perl çöküyor" (perl crashes) veya "İMDAT!!!" (HELP!!!) de öyle. Bunlar yardımcı olmaz. Neyin yanlış olduğuna dair özlü bir açıklama yeterlidir.
Üzerinize düşeni yaptıktan sonra lütfen beklemeye, hatanın kendi kodunuzda olduğunun söylenmesine veya muhtemelen hiç yanıt alamamaya hazırlıklı olun. Perl'ün bakımını yapan gönüllüler meşgul insanlardır, bu nedenle sorununuz kendi kodunuzdaki bariz bir hataysa, anlaşılması zorsa veya mevcut bir raporun kopyasıysa (duplicate), kişisel bir yanıt alamayabilirsiniz.
Hatanızın düzeltilmesi sizin için önemliyse, sorun takipçisini (gönderdiğiniz veya yorum yaptığınız sorunlara yönelik bildirimlere abone olacaksınız) ve Perl'ün geliştirme sürümlerine ait commit günlüklerini takip edin ve nazik sözlerle veya soğuk içecek ikramlarıyla geliştiricileri teşvik edin. (Lütfen geliştiricilere karşı nazik olun. Onları taciz etmek veya onlara saldırmak, istediğinizin tam tersi bir etki doğuracaktır.)
Perl'ün yeni bir sürümü yayınlanırsa ve hatanız hala devam ediyorsa, https://github.com/Perl/perl5/issues adresindeki hata talebinizi güncellemekten çekinmeyin.
Seçenekler
-a: Raporun bir dosyaya kaydedilmesi yerine gönderileceği adres.-b: Raporun gövdesi. Komut satırına dahil edilmemişse veya -f ile bir dosyada belirtilmemişse, raporu düzenleme şansınız olacaktır.-C: Rapor e-posta ile gönderilirken yöneticiye kopya gönderme.-c: Rapor e-posta ile gönderilirken raporun bir kopyasının gönderileceği adres. Varsayılan olarak yerel perl yöneticisinin adresidir (perl derlenirken kaydedilmiştir).-d: Veri modu (çıktıyı yönlendirirseniz veya borulayıp/pipe yaparsanız varsayılandır). Herhangi bir şeyi kaydetmeden veya e-postalamadan yapılandırma verilerinizi yazdırır. Daha eksiksiz veri elde etmek için bunu -v ile kullanabilirsiniz.-e: Kullanılacak düzenleyici.-f: Raporun gövdesini içeren dosya. Hazırlanmış bir raporu hızlı bir şekilde göndermek için bunu kullanın.-F: Sonuçların yazdırılacağı dosya. Varsayılan olarak perlbug.rep değerini alır.-h: Seçeneklerin kısa bir özetini yazdırır.-ok: Bu sistemdeki başarılı derlemeyi perl porter'larına bildirir. -S ve -C seçeneklerini zorunlu kılar. -s ve -b seçenekleri için değerleri zorunlu kılar ve sağlar. Yalnızca tahmin edemediği durumlarda bir dönüş adresi sorar (make ile kullanım içindir). -r ile belirtilen dönüş adresine uyar. Daha eksiksiz veri elde etmek için bunu -v ile kullanabilirsiniz. Yalnızca bu sistem 60 günden daha yeniyse rapor oluşturur.-okay: Daha eski sistemlerde de rapor vermesi dışında -ok gibidir.-nok: Bu sistemdeki başarısız derlemeyi bildirir. -C seçeneğini zorunlu kılar. -s için bir değer zorunlu kılar ve sağlar, ardından raporu düzenlemenizi ve neyin yanlış gittiğini belirtmenizi gerektirir. Alternatif olarak, -f kullanılarak hazırlanmış bir rapor sağlanabilir. Yalnızca tahmin edemediği durumlarda bir dönüş adresi sorar (make ile kullanım içindir). -r ile belirtilen dönüş adresine uyar. Daha eksiksiz veri elde etmek için bunu -v ile kullanabilirsiniz. Yalnızca bu sistem 60 günden daha yeniyse rapor oluşturur.-nokay: Daha eski sistemlerde de rapor vermesi dışında -nok gibidir.-p: Raporla birlikte gönderilecek bir veya daha fazla yama dosyasının veya diğer metin eklerinin adları. Birden fazla dosya virgülle ayrılmalıdır.-r: Dönüş adresiniz. Bu seçeneği kullanmazsanız, program sizden varsayılan adresini onaylamanızı isteyecektir.-S: Onay istemeden raporu kaydeder veya gönderir.-s: Rapora dahil edilecek konu. Komut satırında bir konu belirtmezseniz sizden istenecektir.-t: Test modu. Test amacıyla perlbug'ı bir borudan (pipe) veya dosyadan komutlandırmayı mümkün kılar.-T: Hata raporu yerine bir teşekkür notu gönderir.-v: Rapora ayrıntılı yapılandırma verilerini dahil eder.
Yazarlar
Kenneth Albanowski (kjahds@kjahds.com), daha sonra Gurusamy Sarathy (gsar@activestate.com), Tom Christiansen (tchrist@perl.com), Nathan Torkington (gnat@frii.com), Charles F. Randall (cfr@pobox.com), Mike Guy (mjtg@cam.ac.uk), Dominic Dunlop (domo@computer.org), Hugo van der Sanden (hv@crypt.org), Jarkko Hietaniemi (jhi@iki.fi), Chris Nandor (pudge@pobox.com), Jon Orwant (orwant@media.mit.edu, Richard Foley (richard.foley@rfi.net), Jesse Vincent (jesse@bestpractical.com) ve Craig A. Berry (craigberry@mac.com) tarafından düzenlenmiştir.
Ayrıca Bakınız
perl(1), perldebug(1), perldiag(1), perlport(1), perltrap(1), diff(1), patch(1), dbx(1), gdb(1)
Hatalar
Bilinen yok (bunları bildirmek için ne kullanılmış olması gerektiğini tahmin edin?)