man/system_admin
man · Sistem Yönetimi

$ perlthanks

Bölüm 1 · Sistem Yönetimi

Perl hakkında hata raporları nasıl gönderilir

Özet

       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 bağlantı noktası (standart dağıtımın parçası olmayan bir bağlantı noktası), ikili (binary) bir dağıtım veya çekirdek olmayan bir modülde (Tk, DBI vb. gibi) bir hata bulduysanız, hataları bildirmek için doğru yeri belirlemek üzere 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 bilet açmamaktadır. Bu aracı raporunuzu yazmak ve ardından sorun takipçisine gönderebileceğiniz bir dosyaya kaydetmek için kullanabilirsiniz.

Uç durumlarda, perlbug bir hata raporu yazma sürecinde size rehberlik edecek kadar sisteminizde 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? Öğ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 sürdüren gönüllülerden, mevcut sürümdeki hatalarla ilgili raporlara kıyasla daha az ilgi görmesi muhtemeldir.

Yaşadığınız şeyin bir hata olduğundan emin misiniz? Aldığımız hata raporlarının önemli bir kısmı Perl'de belgelenmiş özellikler çı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 gördüğünüz davranışın yanlış olduğunu gösteren belgelere işaret edebilirseniz, sorununuzun daha fazla ilgi görmesi muhtemeldir. Yeni (ve deneyimli) Perl programcılarının karşılaş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 çalıştırın. Mesaj perldiag içinde yoksa, muhtemelen Perl tarafından üretilmemiştir. Bunun yerine işletim sistemi belgelerinize 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ı (debugger) kullanarak neyin yanlış gittiğini anlayabilirsiniz. Hata ayıklayıcının nasıl kullanılacağı hakkında bilgi edinmek için perldoc perldebug komutunu çalıştırın.

Uygun bir test senaryonuz var mı? Hatanızı yeniden üretmek ne kadar kolaysa, düzeltilmesi de o kadar olasıdır -- eğer hiç kimse sorununuzu çoğaltamazsa, 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 özel bir hata olmadığı sürece); açık, basit belgeler.

İyi bir test senaryosu, Perl'ün test paketine dahil edilmek için neredeyse her zaman iyi bir adaydır. Zamanınız 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ı dahil ettiğinizden emin olun. "Perl bir hata verdi" tam bir hata mesajı değildir.

Bellek dökümü (core dump) (veya eşdeğeri) alırsanız, hata raporuna dahil etmek üzere bir yığın izleme (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 izlemesini kullanmak biraz zor olabilir çünkü büyük olasılıkla bağımsız değişkenlerini değil, yalnızca işlev adlarını içerecektir. Mümkünse, Perl'ünüzü hata ayıklama bilgisiyle yeniden derleyin ve çökmeyi ve yığın izlemesini yeniden üretin.

Hatanızı sade bir İngilizceyle açıklayabilir misiniz? Yeniden üretilebilir bir hatayı anlamak ne kadar kolaysa, düzeltilmesi de o kadar olasıdır. Sorun hakkında sağlayabileceğiniz her türlü içgörü büyük ölçüde yardımcı olacaktır. Başka bir deyişle, sorunu (elinizden geldiğince) analiz etmeye çalışın ve keşiflerinizi bildirin.

Hatanızı kendiniz düzeltebilir misiniz? Eğer öyleyse, bu harika bir haber; yamalı hata raporlarının, yamasız olanlara kıyasla önemli ölçüde daha fazla ilgi ve alaka görmesi muhtemeldir. Lütfen yamanızı perldoc perlhack belgesinde açıklandığı gibi GitHub Pull Request iş akışı aracılığıyla gönderin. Yamaları perl5-porters@perl.org adresine de gönderebilirsiniz. Bir yama gönderirken, mümkünse "git format-patch" kullanarak oluşturun, ancak "diff -pu" ile oluşturulmuş bir birleşik 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 istekleriyle geri gönderilebilir.

Yüksek kaliteli yamalar oluşturmak için birkaç ipucu:

Yamanın tersine çevrilmediğinden emin olun (diff komutunun ilk bağımsız değişkeni genellikle orijinal dosya, ikinci bağımsız değişkeni ise değiştirdiğiniz dosyadır). Yamanızı göndermeden önce "git am" veya "patch" programı ile uygulayarak test ettiğinizden emin olun. Yamamaya çalıştığınız kodla aynı stili takip etmeye çalışın. Yamanızın gerçekten çalıştığından emin olun (yamadığınız şey Perl'ün test paketi kapsamındaysa "make test" çalıştırın).

"perlbug" aracını bir teşekkür notu göndermek için kullanabilir misiniz? Evet, bunu "-T" seçeneğini kullanarak veya 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" bilgilendirici değildir. Ne "perl çöküyor" ne de "YARDIM!!!" bilgilendiricidir. Bunlar yardımcı olmaz. Neyin yanlış gittiğine dair kısa ve öz 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'ü sürdüren gönüllüler meşgul insanlerdir, bu nedenle sorununuz kendi kodunuzdaki bariz bir hataysa, anlaşılması zorsa veya mevcut bir raporun kopyasıysa 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 sorunlar için bildirimlere abone olacaksınız) ve Perl'ün geliştirme sürümlerine ait işleme (commit) günlüklerini takip edin ve kibar sözlerle veya soğuk içecek ikramlarıyla yöneticileri teşvik edin. (Lütfen yöneticilere karşı nazik olun. Onları taciz etmek veya onlara saldırmak istediğinizin tersi bir etki doğuracaktır.)

Perl'ün yeni bir sürümü yayınlanırsa ve hatanız hala mevcutsa, https://github.com/Perl/perl5/issues adresindeki hatanızla ilgili bileti güncellemekten çekinmeyin.

Seçenekler

  • -a: Raporu bir dosyaya kaydetmek yerine gönderilecek adres.

  • -b: Raporun gövdesi. Komut satırına veya -f ile bir dosyaya dahil edilmediyse, 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 kopyasının gönderileceği adres. Varsayılan olarak yerel perl yöneticisinin adresidir (perl derlendiğinde kaydedilmiştir).

  • -d: Veri modu (çıktıyı yönlendirirseniz veya borularsanız (pipe) varsayılandır). Herhangi bir şeyi kaydetmeden veya postalamadan yapılandırma verilerinizi yazdırır. Daha eksiksiz veri elde etmek için bunu -v ile kullanabilirsiniz.

  • -e: Kullanılacak düzenleyici (editor).

  • -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 aktarılacağı dosya. Varsayılan olarak perlbug.rep değerine ayarlanır.

  • -h: Seçeneklerin kısa bir özetini yazdırır.

  • -ok: Bu sistemdeki başarılı derlemeyi perl porters grubuna bildirir. -S ve -C seçeneklerini zorunlu kılar. -s ve -b için değerleri zorunlu kılar ve sağlar. Yalnızca tahmin edemediği durumlarda bir dönüş adresi ister (make ile kullanım için). -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 ile aynıdır.

  • -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 sunulabilir. Yalnızca tahmin edemediği durumlarda bir dönüş adresi ister (make ile kullanım için). -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 ile aynıdır.

  • -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 varsayılan adresini onaylamanızı isteyecektir.

  • -S: Onay istemeden raporu kaydeder veya gönderir.

  • -s: Rapora dahil edilecek konu. Komut satırında bir tane belirtmezseniz sizden istenecektir.

  • -t: Test modu. Test amacıyla perlbug komutunu bir borudan (pipe) veya dosyadan yönetmeyi 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), sonrasında 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?)