Bazı koşullar vurulduğunda perl programının başlatılması hata ayıklayıcısını istiyorum. Başka bir dil kütüphanesi tarafından desteklenen debug() deyimine sahiptir, perl'de benzer bir ifade var mı?Kaynak noktası programına break point ekleyebilir miyim?
cevap
Komut dosyanızın en üstünde bulunan shebang satırına -d anahtarını eklemeyi denediniz mi? Bu gerçekten başlattı alır, ama en azından basit durumlarda bu hata ayıklayıcı başlamalı tam olarak nasıl değişir
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";
print "Test";
gibi bir şey.
Düzenleme: Ardından
> b [line] [condition]
kullanarak belli bir koşulu ile belirli bir hat üzerinde bir kesme noktası ayarlamak ve komut dosyası çalıştırılırken devam etmek
> c
vurabilir - ayıklayıcı durur koşul karşılandığında belirtilen satır
Kesin noktalar gibi bir şey yapmanıza olanak sağlayacak bir şey var, ancak işlevsellik daha geniş: Perl Debugger.
Esasen,
-d
anahtarı, perl yürütülebilir ile iletişim kurmanızı ve perl yürütülebilir dosyasının sizinle iletişim kurmasını sağlar.$DB::single
- Ben doğru anlamak
seçeneği olmadan hata ayıklayıcısını kullanamazsınız Perl kod parçam büyük bir sistemin parçasıdır ve nasıl başlatıldığını kontrol edemiyorum. Görünüşe göre sadece kaynak dosyaya dönüştürebilirim. – Thomson
@Thomson Tan: Bu durumda, günlüğe kaydetme daha iyi çalışır. [Log :: Log4perl] 'a bir göz atın (http://search.cpan.org/perldoc?Log::Log4perl). –
, kodunuzda belirli ayıklayıcı değişkeni kullanmak gerekir. Bunu kodunuzda doğru bir değere ayarlamak, hata ayıklayıcının bu satırda durmasına neden olur.
$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();
gerçekte kod var o zaman hata ayıklayıcıda çalıştığından emin olun olamazsa o zaman, 1. Tabii ki
için $ DB doğrultusunda :: tek set durur Kodunuz Tamamen başka bir sorun. , kodunuzu perl -d
aracılığıyla da çalıştırmanız gerekir.
Programım hata ayıklayıcıda çalışmıyorsa, beklediğim gibi $ DB :: single kullanamaz mıyım? – Thomson
@Thompson: Evet, doğru. Bir Perl programının hata ayıklanmasını istiyorsanız, bunu bir hata ayıklayıcısının altında çalıştırmanız gerekir. Bilgimden en iyi şekilde, bu tür şeyler, diğer dillerdeki kaynak tabanlı gerçek zamanlı hata ayıklamalarının çoğu için geçerlidir - buna rağmen kümelenmelerin postmortemleri. – tchrist
@tchrist Python'da dahili olarak nasıl çalıştığından emin değilim, ancak pdb'yi içe aktarabilirim; pdb.set_trace() 'kodu bu noktada kırmak ve hata ayıklayıcısına girmek. Komut dosyasını herhangi bir özel hata ayıklama değiştiricisi ile çalıştırmak zorunda değilim. –
- 1. Bir Stile Kaynak veya ResourceDictionary ekleyebilir miyim?
- 2. Bir TypeProvider oluşturulan derleme bir Kaynak ekleyebilir miyim?
- 3. Erl komutuna dizinler ekleyebilir miyim?
- 4. Bir önişlemci makrosuna ekleyebilir miyim?
- 5. SSL hata: point, Heroku
- 6. Bir Silverlight uygulamasında flash içeriği ekleyebilir miyim?
- 7. Matplotlib grafiklerini Excel'e programlı olarak ekleyebilir miyim?
- 8. Çok-kuruluşlu bir ilişkiye yönetici ekleyebilir miyim?
- 9. Python'da bir listeye bir işlem ekleyebilir miyim?
- 10. Yerleşimleri şişirmeden/yeniden şişirmeden görünümler ekleyebilir miyim?
- 11. tqdm progressbar öğesine mesaj ekleyebilir miyim?
- 12. Yeniden yapılandırmak için "Smartypants" ekleyebilir miyim?
- 13. Bir pip gereksinimleri dosyasına yorum ekleyebilir miyim?
- 14. Xcode iOS Simulator'a müzik kütüphanesi ekleyebilir miyim?
- 15. Bir yöntemin içine bir sınıf ekleyebilir miyim?
- 16. sql veritabanına yabancı anahtar değeri ekleyebilir miyim?
- 17. maven'den persistence.xml dosyasına değerler ekleyebilir miyim?
- 18. Özel sürüm dizelerini .net DLL dosyasına ekleyebilir miyim?
- 19. 'if' point-free
- 20. BGP protokolü ,entpoint point
- 21. UIView break kısıtlaması ölçeklendirme
- 22. mysql loop Break eşdeğeri
- 23. Segue animations break
- 24. XCTAssert break işlevi
- 25. page-break-sonra flexboxes
- 26. Döngü programına uzunluk ekleme
- 27. Konuşma Programına Esnek Metin
- 28. emacs kaydetme-gezi değil geri yükleme noktası?
- 29. Dönüştürme <Point> - Mat
- 30. Maven'dan (settings.xml dosyasında tanımlanmış parolalar) Spring container'ma özellik ekleyebilir miyim?
Bu harika. Pencerelerde benzer sözdizimi var mı? – Thomson
Gerçek perl çalıştırılabilir başlatmasının shebang'de listelenmemiş olmasına rağmen perl'in anahtarlara saygı göstereceğine inanıyorum - örneğin yukarıdaki betik C: \ Perl \ bin \ perl.exe script.pl olarak başlatılmış olsa bile yine de hata ayıklayıcısını başlatmalı – ivancho