GoGPT Best VPN GoSearch

OnWorks favicon'u

perldebug - Bulutta Çevrimiçi

Perldebug'u OnWorks ücretsiz barındırma sağlayıcısında Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü üzerinden çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen perldebug komutudur.

Program:

ADI


perldebug - Perl hata ayıklama

AÇIKLAMA


Her şeyden önce, kullanmayı denediniz mi? -w değiştirmek?

Perl hata ayıklayıcısında yeniyseniz, öğretici olan perldebtut'u okumayı tercih edebilirsiniz.
hata ayıklayıcıya giriş.

The Perl Debugger


Perl'i şu şekilde çağırırsanız -d değiştirdiğinizde, betiğiniz Perl kaynak hata ayıklayıcısının altında çalışır.
Bu, etkileşimli bir Perl ortamı gibi çalışır ve izin veren hata ayıklayıcı komutlarını ister.
kaynak kodunu incelersiniz, kesme noktaları belirlersiniz, yığın geri izleri alırsınız, değerlerini değiştirirsiniz.
değişkenler, vb. Bu o kadar kullanışlıdır ki, hata ayıklayıcıyı genellikle tek başına çalıştırırsınız.
sadece Perl yapılarını etkileşimli olarak test etmek ve ne yaptıklarını görmek için. Örneğin:

$ perl -d -e 42

Perl'de hata ayıklayıcı, tipik programlarda olduğu gibi ayrı bir program değildir.
derlenmiş ortam. Bunun yerine, -d bayrak derleyiciye kaynak eklemesini söyler
bilgiyi yorumlayıcıya vermek üzere ayrıştırma ağaçlarına aktarır. Bunun anlamı
Hata ayıklayıcının üzerinde çalışması için kodunuzun önce doğru şekilde derlenmesi gerekir. sonra ne zaman
yorumlayıcı başladığında, hata ayıklayıcıyı içeren özel bir Perl kitaplığı dosyasını önceden yükler.

Program durdurulacak krallar gibi yaşamaya önce ilk çalıştırma zamanı yürütülebilir ifadesi (ancak aşağıya bakın)
derleme zamanı ifadeleriyle ilgili olarak) ve bir hata ayıklayıcı komutu girmenizi isteyin. aksine
popüler beklentiler, hata ayıklayıcı ne zaman dursa ve size bir kod satırı gösterse, her zaman
olduğu satırı görüntüler hakkında az önce yürüttüğünden ziyade yürütmek için.

Hata ayıklayıcı tarafından tanınmayan herhangi bir komut, Perl kodu olarak doğrudan yürütülür ("eval"'d).
mevcut paket. (Hata ayıklayıcı, kendi durumunu korumak için DB paketini kullanır.
bilgi.)

Söz konusu "değerlendirmenin" örtük bir kapsamla bağlı olduğuna dikkat edin. Sonuç olarak, yeni tanıtılan herhangi bir
sözcük değişkeni veya herhangi bir değiştirilmiş yakalama arabelleği içeriği, değerlendirmeden sonra kaybolur. bu
hata ayıklayıcı, Perl öğrenmek için güzel bir ortamdır, ancak etkileşimli olarak kullanmayı denerseniz
aynı kapsamda olması gereken malzemeyi tek satırda doldurun.

Hata ayıklayıcı isteminde girilen herhangi bir metin için, baştaki ve sondaki boşluklar ilk sıradadır.
daha fazla işlemden önce soyulur. Bir hata ayıklayıcı komutu, içindeki bazı işlevlerle çakışırsa
kendi programınız, yalnızca işlevden önce bir şeye benzemeyen bir şeyle
baştaki ";" gibi hata ayıklayıcı komutu veya belki bir "+" veya ile sararak
parantezler veya parantezler.

çağrı the Debugger
Hata ayıklayıcıyı çağırmanın birkaç yolu vardır:

perl -d program_adı
"program_name" ile tanımlanan verilen programda.

Perl -d -e 0
Etkileşimli olarak "-e" kullanarak rastgele bir "ifade" sağlayın.

perl -d:ptkdb program_adı
Belirli bir programın hatalarını "Devel::ptkdb" GUI aracılığıyla ayıklayın.

Perl -dt iş parçacıklı_program_adı
Konuları kullanarak belirli bir programın hatalarını ayıklayın (deneysel).

Debugger Komutları
Etkileşimli hata ayıklayıcı aşağıdaki komutları anlar:

h Özet yardım mesajı yazdırır

h [komut] Verilen hata ayıklayıcı komutu için bir yardım mesajı yazdırır.

hh "hh" özel argümanı tüm yardım sayfasını üretir;
uzun.

"hh" komutunun (veya bu konuda herhangi bir komutun) çıktısı kaydırılırsa
ekranınızı geçtikten sonra, komuttan önce bir boru simgesiyle başlayın, böylece
olduğu gibi çağrı cihazınızdan geçirin

DB> |hh

Kullanılan çağrı cihazını "o pager=..." komutu ile değiştirebilirsiniz.

p ifade Geçerli paketteki "print {$DB::OUT} ifade" ile aynı. Özellikle,
Bu yalnızca Perl'in kendi "yazdırma" işlevi olduğundan, bu, iç içe geçmiş verilerin
"x" komutunun aksine yapılar ve nesneler dökümü yapılmaz.

"DB::OUT" kütük tanıtıcısı şu şekilde açılır: /dev/tty, STDOUT'un nerede olabileceğinden bağımsız olarak
için yönlendirilir.

x [maks.derinlik] ifadesi
İfadesini liste bağlamında değerlendirir ve sonucu güzel bir şekilde dışarı atar.
baskılı moda. İç içe veri yapıları, farklı olarak özyinelemeli olarak yazdırılır.
Perl'deki gerçek "yazdırma" işlevi. Hashleri ​​boşaltırken, muhtemelen
'x %h' yerine 'x \%h'yi tercih edin. Bunu yapmak istiyorsanız Dumpvalue'ya bakın
kendin.

Çıktı formatı, aşağıda açıklanan çoklu seçenekler tarafından yönetilir.
"Yapılandırılabilir Seçenekler".

"maxdepth" dahil edilmişse, bir sayı olmalıdır N; değer atılır
bir tek N "dumpDepth" seçeneği geçici olarak ayarlanmış gibi, derin seviyeler
N.

V [pkg [değişken]]
Bir veri kullanarak paketteki (varsayılan olarak "main" olan) tüm (veya bazı) değişkenleri görüntüleyin
güzel yazıcı (karmalar anahtarlarını ve değerlerini gösterir, böylece neyin ne olduğunu görürsünüz,
kontrol karakterleri yazdırılabilir hale getirilir, vb.). koymadığınızdan emin olun.
orada tür belirteci ("$" gibi), sadece sembol adları, şöyle:

V DB dosya adı satırı

Pozitif ve negatif normal ifadeler için "~pattern" ve "!pattern" kullanın.

Bu, geçerli her değişkende "x" komutunu çağırmaya benzer.

X [vars] "V currentpackage [vars]" ile aynı.

y [seviye [değişken]]
Tüm (veya bazı) sözcük değişkenlerini (anımsatıcı: "mY" değişkenleri)
mevcut kapsam veya seviye kapsamları daha yüksektir. Değişkenleri sınırlayabilirsiniz
ile görmek vars tam olarak "V" ve "X" komutlarında olduğu gibi çalışır.
"PadWalker" modülünün 0.08 veya daha yüksek sürümünü gerektirir; bu olursa uyarır
yüklü değil. Çıktı, "V" ile aynı tarzda oldukça basılmıştır ve
format aynı seçeneklerle kontrol edilir.

T Bir yığın geri izlemesi üretin. Çıktısıyla ilgili ayrıntılar için aşağıya bakın.

s [ifade] Tek adım. Azalan, başka bir ifadenin başına kadar yürütür
alt program çağrılarına dönüştürülür. işlevi içeren bir ifade sağlanırsa
aramalar da tek adımlı olacaktır.

n [ifade] Sonraki. Bir sonrakinin başlangıcına kadar alt program çağrıları üzerinden yürütülür.
Beyan. İşlev çağrılarını içeren bir ifade sağlanırsa, bunlar
işlevler, her ifadeden önce duraklarla yürütülür.

r Mevcut alt programdan dönüşe kadar devam edin. Dönüş değerini boşalt
"PrintRet" seçeneği ayarlanmışsa (varsayılan).

Son "n" veya "s" komutunu tekrarlayın.

c [satır|alt]
Devam edin, isteğe bağlı olarak belirtilen yere yalnızca bir kerelik kesme noktası ekleyin
satır veya alt program.

l Sonraki satır penceresini listeleyin.

l min+incr "min" ile başlayan "incr+1" satırlarını listeleyin.

l min-maks "min" ile "maks" arasındaki satırları listeleyin. "l -", "-" ile eş anlamlıdır.

l satırı Tek bir satır listeler.

l alt ad Alt programdan satırların ilk penceresini listeler. alt ad bir değişken olabilir
bir kod referansı içerir.

- Önceki satır penceresini listeleyin.

v [line] Geçerli satırın etrafındaki birkaç kod satırını görüntüleyin.

. Dahili hata ayıklayıcı işaretçisini en son yürütülen satıra döndürün ve çıktısını alın
o çizgi.

f dosyaadı Farklı bir dosya veya "eval" ifadesini görüntülemeye geçin. Eğer Dosya bir değil
%INC değerlerinde bulunan tam yol adı, normal ifade olarak kabul edilir.

"eval"ed dizeleri (erişilebilir olduğunda) dosya adları olarak kabul edilir: "f (eval
7)" ve "f eval 7\b", 7. "eval"ed dizesinin gövdesine erişir (sırasıyla
yürütme). Şu anda yürütülen "eval" ve "eval"ed öğelerinin gövdeleri
alt yordamları tanımlayan dizeler kaydedilir ve böylece erişilebilir.

/pattern/ İleriye doğru kalıp ara (bir Perl normal ifadesi); nihai / isteğe bağlıdır. Araştırma
varsayılan olarak büyük/küçük harfe duyarsızdır.

?Desen? Desen için geriye doğru arama yapın; nihai? İsteğe bağlı. Arama durum-
varsayılan olarak duyarsız.

L [abw] Eylemleri, kesme noktalarını ve izleme ifadelerini listeleyin (varsayılan tüm)

S [[!]normal ifade]
Normal ifadeyle eşleşen [değil] alt yordam adlarını listeleyin.

t [n] İzleme modunu değiştir (ayrıca "AutoTrace" seçeneğine bakın). İsteğe bağlı argüman
mevcut seviyenin altında izlenecek maksimum seviye sayısı; daha derin bir şey
bu sessiz olacak.

t [n] expr "expr" yürütme yoluyla izleme. İsteğe bağlı ilk bağımsız değişken maksimumdur
mevcut seviyenin altında izlenecek seviye sayısı; bundan daha derin bir şey
sessiz olacak. için perldbguts'ta "Çerçeve Listeleme Çıktı Örnekleri"ne bakın.
örnekleri.

b Geçerli satırda kesme noktası ayarlar

b [çizgi] [koşul]
Verilen satırdan önce bir kesme noktası ayarlayın. Bir koşul belirtilirse,
ifadeye her ulaşıldığında değerlendirilir: yalnızca şu durumlarda bir kesme noktası alınır:
durum doğrudur. Kesme noktaları yalnızca bir
yürütülebilir ifade. Koşullar "if" kullanmaz:

b237 $x > 30
b 237 ++$sayım237 < 11
b33 /desen/i

Satır numarası "." ise, geçerli satırda bir kesme noktası ayarlar:

B . $n > 100

b [dosya]:[satır] [koşul]
(Muhtemelen farklı) bir dosyada verilen satırdan önce bir kesme noktası ayarlayın. Eğer bir
koşul belirtilir, ifadeye her ulaşıldığında değerlendirilir: a
kesme noktası yalnızca koşul doğruysa alınır. Kesme noktaları yalnızca
yürütülebilir bir ifadeyi başlatan satırlara ayarlayın. Koşullar "if" kullanmaz:

b lib/MyModule.pm:237 $x > 30
b /usr/lib/perl5/site_perl/CGI.pm:100 ++$sayım100 < 11

b alt adı [koşul]
Adlandırılmış alt yordamın ilk satırından önce bir kesme noktası ayarlayın. alt ad eğer yalnızca sığınmacı statüleri sona erdirilmemişse, kalıcı oturma iznine
bir kod referansı içeren bir değişken olun (bu durumda koşul değil
desteklenir).

b erteleme alt adı [koşul]
Derlendikten sonra altyordamın ilk satırında bir kesme noktası ayarlayın.

b dosya adını yükle
İlk yürütülen satırdan önce bir kesme noktası ayarlayın. Dosya, hangisini yapmalı
%INC değerleri arasında bulunan tam yol adı olsun.

b derleme alt adı
Belirtilenden sonra yürütülen ilk ifadeden önce bir kesme noktası ayarlar.
alt program derlenir.

B satırı Belirtilenden bir kesme noktası sil hat.

B * Yüklü tüm kesme noktalarını silin.

[dosya]:[satır]'ı devre dışı bırak
Programın yürütülmesini durdurmaması için kesme noktasını devre dışı bırakın.
Kesme noktaları varsayılan olarak etkindir ve "etkinleştir" kullanılarak yeniden etkinleştirilebilir.
Komut.

[line] devre dışı bırak
Programın yürütülmesini durdurmaması için kesme noktasını devre dışı bırakın.
Kesme noktaları varsayılan olarak etkindir ve "etkinleştir" kullanılarak yeniden etkinleştirilebilir.
Komut.

Bu, geçerli dosyadaki bir kesme noktası için yapılır.

[dosya]:[satır] etkinleştir
Kesme noktasını etkinleştirin, böylece programın yürütülmesini durduracaktır.

[satır] etkinleştir
Kesme noktasını etkinleştirin, böylece programın yürütülmesini durduracaktır.

Bu, geçerli dosyadaki bir kesme noktası için yapılır.

bir [satır] komutu
Satır yürütülmeden önce yapılacak bir eylemi ayarlayın. Eğer hat atlanmış, ayarlanmış
hatta yürütülmek üzere olan bir eylem. tarafından atılan adımların sırası
hata ayıklayıcı

1. bu satırda bir kesme noktası olup olmadığını kontrol edin
2. gerekirse satırı yazdırın (izleme)
3. bu satırla ilgili tüm işlemleri yapın
4. Bir kesme noktasında mı yoksa tek adımda mı kullanıcıya sor
5. çizgiyi değerlendir

Örneğin, bu satır 53 her geçildiğinde $foo yazdıracaktır:

53 baskı "DB BULUNDU $foo\n"

Bir satır Belirtilen satırdan bir eylemi siler.

A * Yüklü tüm eylemleri silin.

w expr Global bir saat ifadesi ekleyin. Ne zaman izlenen bir global hata ayıklayıcıyı değiştirse
duracak ve eski ve yeni değerleri gösterecektir.

W ifade İzleme ifadesini sil

W * Tüm izleme ifadelerini silin.

o Tüm seçenekleri görüntüleyin.

o booption ...
Listelenen her Boole seçeneğini 1 değerine ayarlayın.

o herhangi bir seçenek? ...
Bir veya daha fazla seçeneğin değerini yazdırın.

o seçenek=değer...
Bir veya daha fazla seçeneğin değerini ayarlayın. Değerde dahili boşluk varsa,
alıntı yapılmalıdır. Örneğin, "o pager="less -MQeicsNfr"" ayarını yapabilirsiniz.
aramak az bu özel seçeneklerle. İster tek ister çift kullanabilirsiniz
alıntılar, ancak yaparsanız, aynı türden gömülü örneklerden kaçmanız gerekir.
başladığınız teklifin yanı sıra, hemen kaçan herhangi bir kaçış
bu alıntıdan önce gelen, ancak alıntının kendisinden kaçması amaçlanmayan. İçinde
başka bir deyişle, alıntıdan bağımsız olarak tek alıntı kurallarına uyarsınız; benlik
seçenek='bu fena değil'" veya "o seçenek="\"Değil mi?\""" dedi.

Tarihsel nedenlerle, "=değer" isteğe bağlıdır, ancak yalnızca şu durumlarda varsayılan olarak 1'dir:
bunu yapmak güvenlidir - bu, çoğunlukla Boole seçenekleri için. her zaman daha iyidir
"=" kullanarak belirli bir değer atamak için. "Seçenek" kısaltılabilir, ancak
netlik için muhtemelen olmamalıdır. Birkaç seçenek birlikte ayarlanabilir. Görmek
Bunların bir listesi için "Yapılandırılabilir Seçenekler".

< ? İstem öncesi tüm Perl komut eylemlerini listeleyin.

< [ komut ]
Her hata ayıklayıcı isteminden önce gerçekleşecek bir eylem (Perl komutu) ayarlayın. bir çok-
satır komutu, satırsonu ters eğik çizgi ile girilebilir.

< * İstem öncesi tüm Perl komut eylemlerini silin.

<< komut Her hata ayıklayıcı isteminden önce gerçekleşecek bir eylem (Perl komutu) ekleyin. bir çok-
satır komutu, yeni satırları ters çevirerek girilebilir.

> ? İstem sonrası Perl komut eylemlerini listeleyin.

> komut Az önce verdiğiniz komut isteminden sonra gerçekleşecek bir eylem (Perl komutu) ayarlayın
betiği yürütmeye geri dönmek için bir komut. Çok satırlı bir komut olabilir
yeni satırları ters eğik çizgi ile girildi (bahse gireriz bunu tahmin edemezdiniz
şimdi).

> * İstem sonrası tüm Perl komut eylemlerini silin.

>> komut İstemden sonra gerçekleşecek bir eylem (Perl komutu) ekler.
betiği yürütmeye geri dönmek için bir komut verildi. Çok satırlı bir komut olabilir
satırsonu ters eğik çizgi ile girilebilir.

{ ? İstem öncesi hata ayıklayıcı komutlarını listeleyin.

{ [ emretmek ]
Her hata ayıklayıcı isteminden önce gerçekleşecek bir eylem (hata ayıklayıcı komutu) ayarlayın. A
çok satırlı komut geleneksel şekilde girilebilir.

Bu komut bazı açılardan yeni olduğundan, görünürseniz bir uyarı verilir.
bunun yerine yanlışlıkla bir blok girmiş olmak. Eğer yapmak istediğin buysa,
";{ ... }" veya hatta "do { ... }" ile olduğu gibi yazın.

{ * İstem öncesi tüm hata ayıklayıcı komutlarını silin.

{{ komut Her hata ayıklayıcı isteminden önce gerçekleşecek bir eylem (hata ayıklayıcı komutu) ekleyin. A
Nasıl olduğunu tahmin edebiliyorsanız, çok satırlı komut girilebilir: yukarıya bakın.

! sayı Bir önceki komutu yeniden yap (önceki komut için varsayılandır).

! -number Number'th önceki komutu yinele.

! desen Desen ile başlayan son komutu yinele. "o geri çağırma Komutu"na da bakın.

!! cmd Bir alt işlemde cmd'yi çalıştırın (DB::IN'den okur, DB::OUT'a yazar) Bkz. "o
shellBang", ayrıca. Kullanıcının mevcut kabuğunun (yani, $ENV{SHELL}
değişken), çıkışın doğru yorumlanmasına müdahale edebilecek şekilde kullanılacaktır.
durum veya sinyal ve coredump bilgileri.

kaynak dosyadan hata ayıklayıcı komutlarını okuyun ve yürütün dosya. dosya kendisi içerebilir
"kaynak" komutları.

H -sayı Son n komutu görüntüler. Yalnızca bir karakterden uzun komutlar listelenir.
If numara atlanmıştır, hepsini listeleyin.

q veya ^D Çık. ("Çıkış", takma ad oluşturmadığınız sürece bunun için çalışmaz) Bu
hata ayıklayıcıdan çıkmanın yalnızca desteklenen yolu, ancak iki kez "çıkış" yazmak
çalışır.

Sondan çıkmak istiyorsanız "inhibit_exit" seçeneğini 0 olarak ayarlayın.
senaryo. Ayrıca adım atmak istiyorsanız $finished'i 0 olarak ayarlamanız gerekebilir.
küresel yıkım yoluyla.

R Yeni bir oturum "exec()" yaparak hata ayıklayıcıyı yeniden başlatın. seninkini korumaya çalışıyoruz
bununla ilgili geçmiş, ancak dahili ayarlar ve komut satırı seçenekleri olabilir
kaybetti.

Şu ayar şu anda korunur: geçmiş, kesme noktaları, eylemler,
hata ayıklayıcı seçenekleri ve Perl komut satırı seçenekleri -w, -I, ve -e.

|dbcmd DB::OUT'u geçerli çağrı cihazınıza aktararak hata ayıklayıcı komutunu çalıştırın.

||dbcmd "|dbcmd" ile aynıdır ancak DB::OUT da geçici olarak "seçilir".

= [takma ad değeri]
gibi bir komut takma adı tanımlayın

= q'dan çık

veya mevcut takma adları listeleyin.

komut Bir Perl ifadesi olarak komutu yürütün. Sondaki noktalı virgül sağlanacaktır.
Perl ifadesi bir Perl hata ayıklayıcı için başka türlü karıştırılacaksa, bir
noktalı virgül de önde.

m ifade Değerlendirilen ifadenin sonucunda hangi yöntemlerin çağrılabileceğini listeler.
İfade, kutsanmış bir nesneye veya bir
paket ismi.

M Yüklenen tüm modülleri ve sürümlerini görüntüleyin.

adam [manpage]
Adına rağmen, bu, sisteminizin varsayılan belge görüntüleyicisini
verilen sayfada veya izleyicinin kendisinde kılavuz sayfası atlanır. Eğer o izleyici
adam, mevcut "Yapılandırma" bilgisi çağırmak için kullanılır adam uygun kullanarak
MANPATH veya -M yol seçenek. "XXX" formunun eşleşen aramaları başarısız oldu
formun bilinen kılavuz sayfaları perlXXX yeniden denenecek. Bu, "adam" yazmanıza izin verir.
hata ayıklayıcıdan "debug" veya "man op".

Geleneksel olarak kullanılabilir bir sistemden yoksun sistemlerde adam komut, hata ayıklayıcı çağırır
Perldoc. Bazen bu belirleme, inatçı nedeniyle yanlıştır.
satıcılar veya daha doğrusu, girişimci kullanıcılara. içine düşersen
her iki kategoride de, $DB::doccmd değişkenini herhangi bir görüntüleyiciye manuel olarak ayarlayın
sisteminizdeki Perl belgelerini görüntülemek için. Bu bir rc dosyasında ayarlanabilir,
veya doğrudan atama yoluyla. Hala çalışan bir örnek bekliyoruz
satırları boyunca bir şey:

$DB::doccmd = 'netscape -uzaktan kumanda http://something.here/';

yapılandırılabilir Opsiyonlar
Hata ayıklayıcı, etkileşimli veya "o" komutu kullanılarak ayarlanabilen çok sayıda seçeneğe sahiptir.
ortamdan veya bir rc dosyasından. (./.perldb veya ~/.perldb Unix'in altında.)

"recallCommand", "ShellBang"
Bir komutu geri çağırmak veya bir kabuk oluşturmak için kullanılan karakterler. Varsayılan olarak, her ikisi de
"!" olarak ayarlanmıştır, bu talihsiz bir durumdur.

"çağrı cihazı" Çağrı cihazı borulu komutların çıktısı için kullanılacak program ("|" ile başlayanlar)
karakter.) Varsayılan olarak $ENV{PAGER} kullanılacaktır. Hata ayıklayıcı kullandığından
seçiliyse, kalın ve altı çizili için mevcut terminal özellikleriniz
çağrı cihazı, kaçış dizilerini değişmeden geçmez, bazılarının çıktısı
hata ayıklayıcı komutları, çağrı cihazı aracılığıyla gönderildiğinde okunamaz.

"tkRunning" Sorulurken Tk'yi çalıştırın (ReadLine ile).

"signalLevel", "warnLevel", "dieLevel"
Ayrıntı düzeyi. Varsayılan olarak, hata ayıklayıcı istisnalarınızı bırakır ve
yalnızca uyarılar, çünkü bunları değiştirmek düzgün çalışan programları bozabilir.
INT, BUS veya SEGV sinyalleri yakalanmadığında bir mesaj yazdırmaya çalışacaktır.
varmak. (Ancak aşağıdaki "HATALAR" bölümündeki sinyallere bakın.)

Bu varsayılan güvenli modu devre dışı bırakmak için bu değerleri şundan daha yüksek bir değere ayarlayın:
0. 1 seviyesinde, herhangi bir uyarı aldığınızda geri dönüşler alırsınız.
(bu genellikle can sıkıcıdır) veya istisna (bu genellikle değerlidir).
Ne yazık ki, hata ayıklayıcı, ölümcül olmayan istisnalardan önemli istisnaları ayırt edemez.
olanlar. "dieLevel" 1 bileyse, ölümcül olmayan istisnalarınız da izlenir
ve "değerlendirilen" dizilerden veya herhangi birinden geldiyse belirsiz bir şekilde değiştirildi.
yüklemeye çalıştığınız modüller içinde bir tür "değerlendirme". "dieLevel" 2 ise,
hata ayıklayıcı nereden geldiklerini umursamıyor: İstisnanızı gasp ediyor
işleyici ve bir iz yazdırır, ardından tüm istisnaları kendi ile değiştirir
süslemeler. Bu, bazı izleme amaçları için yararlı olabilir, ancak
istisna işlemesini alan herhangi bir programı umutsuzca yok etme eğilimindedir
ciddi anlamda.

"AutoTrace" İzleme modu ("t" komutuna benzer, ancak "PERLDB_OPTS" içine yerleştirilebilir).

"LineInfo" Satır numarası bilgilerinin yazdırılacağı dosya veya boru. Eğer bir boru ise (diyelim ki,
"|visual_perl_db"), ardından kısa bir mesaj kullanılır. kullanılan mekanizma budur
özel "vi" gibi bir bağımlı düzenleyici veya görsel hata ayıklayıcı ile etkileşim kurmak için
veya "emacs" kancaları veya "ddd" grafik hata ayıklayıcı.

"inhibit_exit"
0 ise, izin verir adım kapalı senaryonun sonu.

"PrintRet" Ayarlanmışsa (varsayılan) "r" komutundan sonra dönüş değerini yazdırın.

"ornaments" Komut satırının ekran görünümünü etkiler (bkz. Term::ReadLine). Var
şu anda bunları devre dışı bırakmanın bir yolu yok, bu da bazı çıktıları okunaksız hale getirebilir
bazı ekranlar veya bazı çağrı cihazları ile. Bu bir hata olarak kabul edilir.

"frame" Alt programlara giriş ve çıkış sırasında mesajların yazdırılmasını etkiler. Eğer
"frame & 2" yanlış, mesajlar sadece girişte yazdırılıyor. (Çıkışta yazdırma
diğer mesajların arasına serpiştirilirse faydalı olabilir.)

"Çerçeve ve 4" ise, işlevlere ilişkin argümanlar, ayrıca bağlam ve arayan yazdırılır
bilgi. "Çerçeve ve 8", aşırı yüklenmiş "stringify" ve "tie"d "FETCH" etkinleştirilirse
basılı argümanlar. "Çerçeve & 16" ise, alt programdan dönüş değeri
yazdırılır.

Argüman listesinin kesildiği uzunluk, bir sonraki
seçenek:

"maxTraceLen"
"Çerçeve" seçeneğinin bit 4'ü ayarlandığında bağımsız değişken listesini kesmek için uzunluk.

"Pencere boyutu"
Kod listesi penceresinin boyutunu değiştirin (varsayılan 10 satırdır).

Aşağıdaki seçenekler "V", "X" ve "x" komutlarıyla olanları etkiler:

"arrayDepth", "hashDepth"
Yalnızca ilk N öğelerini yazdırın (hepsi için '').

"dumpDepth" Yapıları boşaltırken yineleme derinliğini N seviyeleriyle sınırlayın. negatif değerler
sonsuzluk olarak yorumlanır. Varsayılan: sonsuz.

"kompaktDump", "çokKompakt"
Dizi ve hash çıktısının stilini değiştirin. "compactDump" ise, kısa dizi
tek satıra yazdırılacaktır.

"globPrint" Kürelerin içeriğinin yazdırılıp yazdırılmayacağı.

"DumpDB Dosyaları"
Hata ayıklanmış dosyaları tutan döküm dizileri.

"Döküm Paketleri"
Paketlerin sembol tablolarını boşaltın.

"DökümYeniden Kullanıldı"
"Yeniden kullanılan" adreslerin içeriğini boşaltın.

"alıntı", "HighBit", "undefPrint"
Dize dökümünün stilini değiştirin. "Alıntı" için varsayılan değer "otomatik"tir; bir
""" olarak ayarlayarak çift veya tek tırnak biçimini etkinleştirebilir veya
"'", sırasıyla. Varsayılan olarak, yüksek bit setli karakterler yazdırılır
kelimesi kelimesine.

"Yalnızca Kullanım" İlkel paket başına bellek kullanımı dökümü. Dizelerin toplam boyutunu hesaplar
paketteki değişkenlerde bulunur. Bu, sözlüklerdeki sözcükleri içermez.
modülün dosya kapsamı veya kapanışlarda kayboldu.

"HistFile" Geçmişin geldiği dosyanın yolu (kullanılabilir bir Term::ReadLine varsayılarak)
arka uç) hata ayıklayıcının başlangıcında okunacak ve kaydedileceği yere
kapatıldığında (oturumlar arasında kalıcılık için). Konsept olarak Bash'inkine benzer
".bash_history" dosyası.

"HistSize" Geçmişte kaydedilen satırların sayısı (yukarıdaki "HistFile" varsayılarak).

rc dosyası okunduktan sonra hata ayıklayıcı $ENV{PERLDB_OPTS} ortam değişkenini okur
ve bunu hata ayıklayıcıya girilebilecek bir "O ..." satırının geri kalanı olarak ayrıştırır
çabuk. Başlatma seçeneklerini "TTY", "noTTY", "ReadLine" ve
Orada "Sürekli".

rc dosyanız şunları içeriyorsa:

parse_options("NonStop=1 LineInfo=db.out AutoTrace");

daha sonra betiğiniz insan müdahalesi olmadan çalışacak ve izleme bilgilerini
dosya db.out. (Bunu keserseniz, "LineInfo" yu sıfırlasanız iyi olur. /dev/tty eğer
bir şey görmeyi bekliyoruz.)

"TTY" G/Ç hatalarını ayıklamak için kullanılacak TTY.

"noTTY" ayarlanırsa, hata ayıklayıcı "NonStop" moduna geçer ve bir TTY'ye bağlanmaz.
Kesintiye uğrarsa (veya kontrol, açık ayarı aracılığıyla hata ayıklayıcıya giderse)
Perl betiğinden $DB::signal veya $DB::single), bir TTY'ye bağlanır
başlangıçta "TTY" seçeneğinde belirtilen veya kullanılarak çalışma zamanında bulunan bir tty'ye
Seçtiğiniz "Term::Rendezvous" modülü.

Bu modül, bir nesne döndüren "yeni" adlı bir yöntemi uygulamalıdır.
iki yöntem: "GİRİŞ" ve "ÇIKIŞ". Bunlar, kullanılacak kütük tanıtıcılarını döndürmelidir.
buna göre giriş ve çıkış hata ayıklama. "Yeni" yöntem incelemeli
başlangıçta $ENV{PERLDB_NOTTY} değerini içeren bir argüman veya
Aksi takdirde "$ENV{HOME}/.perldbtty$$". Bu dosya uygun olup olmadığı incelenmemiştir.
mülkiyet, bu nedenle güvenlik tehlikeleri teorik olarak mümkündür.

"ReadLine" Yanlışsa, hata ayıklamak için hata ayıklayıcıdaki okuma satırı desteği devre dışı bırakılır
ReadLine kullanan uygulamalar.

"NonStop" Ayarlanırsa, hata ayıklayıcı kesintiye uğrayana kadar etkileşimli olmayan moda geçer veya
programlı olarak $DB::signal veya $DB::single ayarlayarak.

$ENV{PERLDB_OPTS} değişkenini kullanmaya bir örnek:

$ PERLDB_OPTS="Sürekli olmayan çerçeve=2" perl -d programım

Bu betiği çalıştıracak programım insan müdahalesi olmadan, çağrı ağacının yazdırılması
giriş ve çıkış noktaları ile. "NonStop=1 kare=2"nin "N f=2" ile eşdeğer olduğunu ve
orijinal olarak, seçenekler ilk harfle benzersiz bir şekilde kısaltılabilir (modulo the
"Döküm*" seçenekleri). Yine de, bunları her zaman tam olarak hecelemeniz önerilir.
okunabilirlik ve gelecekteki uyumluluk için.

Diğer örnekler arasında

$ PERLDB_OPTS="NonStop LineInfo=liste çerçevesi=2" perl -d myprogram

komut dosyasını etkileşimli olmayan bir şekilde çalıştıran, her girişte bir alt programa bilgi yazdıran ve
adlı dosyaya yürütülen her satır listeleme. (Bunu keserseniz daha iyi
"LineInfo"yu "etkileşimli" bir şeye sıfırlayın!)

Diğer örnekler şunları içerir (ortam değişkenini göstermek için standart kabuk sözdizimini kullanma
ayarlar):

$ ( PERLDB_OPTS="NonStop çerçeve=1 AutoTrace LineInfo=tperl.out"
perl -d programım )

bu, "Term::ReadLine"ın kendisini kullanan bir programın hatalarını ayıklamak için yararlı olabilir. Yapma
karşılık gelen pencerede kabuğunuzu TTY'den ayırmayı unutmayın. /dev/ttyXX,
söyle, gibi bir komut vererek

$ uyku 1000000

Ayrıntılar için perldbguts'ta "Debugger Internals" bölümüne bakın.

Debugger Girdi / Çıktı
Komut İstemi Hata ayıklayıcı istemi şuna benzer:

DB<8>

ya da

DB<<17>>

bu numaranın komut numarası olduğu ve
yerleşik csh-tarih mekanizması gibi. Örneğin, "!17" komutu tekrar eder.
17 numara. Köşeli parantezlerin derinliği, köşeli parantezlerin iç içe geçme derinliğini gösterir.
hata ayıklayıcı. Örneğin, birden fazla parantez seti alabilirsiniz.
zaten bir kesme noktasında ve ardından kendisi olan bir işlev çağrısının sonucunu yazdırdı
kesme noktası var veya "s/n/t ifade" komutuyla bir ifadeye adım atıyorsunuz.

çok satırlı komutlar
Alt program tanımı gibi çok satırlı bir komut girmek istiyorsanız,
birkaç ifade veya bir format, normalde sonlandıracak yeni satırdan kaçın
ters eğik çizgi ile hata ayıklayıcı komutu. İşte bir örnek:

(1) için DB<1> { \
devamı: "tamam\n" yazdır; \
devamı: }
ok
ok
ok
ok

Yeni satırdan kaçma işinin etkileşimli komutlara özgü olduğunu unutmayın.
hata ayıklayıcıya yazılır.

Yığın geri izleme
İşte "T" komutu aracılığıyla bir yığın geri izlemenin nasıl görünebileceğine dair bir örnek:

$ = main::infested 'Ambulation.pm' dosyasından 10. satırdan çağrılır
@ = Ambulation::legs(1, 2, 3, 4) dosyası 'camel_flea' 7. satırdan çağrılır
$ = main::pests('bactrian', 4) 'camel_flea' dosyasından 4. satırdan çağrılır

Yukarıdaki sol karakter, fonksiyonun içinde bulunduğu bağlamı gösterir.
sırasıyla skaler veya liste bağlamları anlamına gelen "$" ve "@" ve "."
boşluk bağlamı anlamına gelir (aslında bir tür skaler bağlamdır). ekran
yukarıda, yığını çalıştırdığınızda "main::infested" işlevinde olduğunuzu söylüyor
dökümü ve dosyanın 10. satırından skaler bağlamda çağrıldığını
ambulasyon.pm, ancak herhangi bir argüman olmadan, yani şu şekilde adlandırıldı:
& musallat. Sonraki yığın çerçevesi, "Ambulation::legs" işlevinin
liste bağlamında çağrılır deve biti dört argüman içeren dosya. Son
yığın çerçevesi, "main::pests" in skaler bağlamda çağrıldığını gösterir.
deve biti, ancak 4. satırdan itibaren.

Etkin bir "use" ifadesinin içinden "T" komutunu çalıştırırsanız,
backtrace, hem "gerekli" bir çerçeve hem de bir "değerlendirme" çerçevesi içerecektir.

Satır Listeleme Formatı
Bu, "l" komutunun üretebileceği çıktı türlerini gösterir:

DB<<13>> l
101: @i{@i} = ();
102:b @isa{@i,$paket} = ()
103 if($i{$prevpack} var || var $isa{$pack});
104}
105
106 sonraki
107==> if(vardır $isa{$pack});
108
109:a if ($ekstra-- > 0) {
110: %isa = ($paket,1);

Kırılabilir çizgiler ":" ile işaretlenmiştir. Kesme noktaları olan satırlar "b" ile işaretlenmiştir ve
eylemleri "a" ile olanlar. Yürütülmek üzere olan satır ile işaretlenmiştir.
"==>".

Lütfen hata ayıklayıcı listelerindeki kodun sizinkiyle aynı görünmeyebileceğini unutmayın.
orijinal kaynak kodu. Hat direktifleri ve harici kaynak filtreleri
Perl görmeden önce kod, kodun orijinal konumlarından hareket etmesine veya almasına neden olur.
tamamen farklı formlarda.

Çerçeve listesi
"Çerçeve" seçeneği ayarlandığında, hata ayıklayıcı girilenleri yazdırır (ve isteğe bağlı olarak
çıkıldı) farklı stillerde alt programlar. Perldebguts'u inanılmaz derecede uzun süre görün
bunlara örnekler.

Hata ayıklama Derleme zamanı Tablolar
Derleme zamanı yürütülebilir ifadeleriniz varsa (BEGIN, UNITCHECK ve
Kontrol blokları veya "kullanım" ifadeleri), bunlar değil hata ayıklayıcı tarafından durdurulmasına rağmen
"require" ve INIT blokları olacak ve derleme zamanı ifadeleri şu şekilde izlenebilir:
"PERLDB_OPTS" içinde ayarlanan "AutoTrace" seçeneği). Ancak kendi Perl kodunuzdan şunları yapabilirsiniz:
aşağıdaki ifadeyi kullanarak kontrolü hata ayıklayıcıya geri aktarın;
hata ayıklayıcı çalışmıyor:

$DB::tek = 1;

$DB::single'ı 2'ye ayarlarsanız, bu "n" komutunu yazmaya eşdeğerdir, oysa
1 değeri "s" komutu anlamına gelir. $DB::trace değişkeni 1 olarak ayarlanmalıdır.
"t" komutunu yazdığınızı simüle edin.

Derleme zamanı kodunda hata ayıklamanın başka bir yolu da hata ayıklayıcıyı başlatmak, üzerinde bir kesme noktası ayarlamaktır.
yük bazı modüllerin:

DB<7> b yükü f:/perllib/lib/Carp.pm
'f:/perllib/lib/Carp.pm' yüklendiğinde duracaktır.

ve ardından (mümkünse) "R" komutunu kullanarak hata ayıklayıcıyı yeniden başlatın. Biri "b derlemesini" kullanabilir
alt adı" aynı amaç için.

Debugger Kişiselleştirme
Hata ayıklayıcı muhtemelen, hiçbir zaman gerek duymayacağınız kadar yeterli yapılandırma kancası içerir.
kendiniz değiştirin. Hata ayıklayıcının davranışını hata ayıklayıcının içinden değiştirebilirsiniz.
"PERLDB_OPTS" ortam değişkeni aracılığıyla komut satırından "o" komutunu kullanarak,
ve özelleştirme dosyalarından.

ayarlayarak bazı özelleştirmeler yapabilirsiniz. .perldb başlatmayı içeren dosya
kod. Örneğin, bunun gibi takma adlar yapabilirsiniz (sonuncusu insanların beklediği
orada olmak):

$DB::alias{'len'} = 's/^len(.*)/p uzunluk($1)/';
$DB::alias{'stop'} = 's/^stop (at|in)/b/';
$DB::alias{'ps'} = 's/^ps\b/p skaler /';
$DB::alias{'quit'} = 's/^quit(\s*)/exit/';

seçeneklerinden değiştirebilirsiniz .perldb bunun gibi aramaları kullanarak;

parse_options("NonStop=1 LineInfo=db.out AutoTrace=1 çerçeve=2");

Kod "DB" paketinde yürütülür. Bunu not et .perldb önce işlenir
"PERLDB_OPTS" işleniyor. Eğer .perldb "afterinit" alt programını tanımlar, bu işlev
hata ayıklayıcı başlatma sona erdikten sonra çağrılır. .perldb akım içinde olabilir
dizinde veya ana dizinde. Bu dosyanın kaynağı Perl olduğundan ve
güvenlik nedenleriyle, keyfi komutlar içeriyorsa, süper kullanıcıya veya kullanıcıya ait olmalıdır.
geçerli kullanıcı ve sahibi dışında hiç kimse tarafından yazılamaz.

@DB::typeahead'e isteğe bağlı komutlar ekleyerek hata ayıklayıcıya TTY girişini taklit edebilirsiniz. İçin
örnek, senin .perldb dosya şunları içerebilir:

sub afterinit { push @DB::typeahead, "b 4", "b 6"; }

Hata ayıklayıcıdan hemen sonra 4. ve 6. satırlarda kesme noktaları belirlemeye çalışacak olan
başlatma. @DB::typeahead'in desteklenen bir arabirim olmadığını ve şunlara tabi olduğunu unutmayın:
gelecekteki sürümlerde değişiklik.

Hata ayıklayıcıyı değiştirmek istiyorsanız, kopyalayın perl5db.pl Perl kitaplığından başka bir isme
ve gönlünüzce hackleyin. Ardından "PERL5DB" ortamınızı ayarlamak isteyeceksiniz
şöyle bir şey söylemek için değişken:

BEGIN { "myperl5db.pl" gerektirir }

Son çare olarak, hata ayıklayıcıyı doğrudan özelleştirmek için "PERL5DB"yi de kullanabilirsiniz.
dahili değişkenleri ayarlama veya hata ayıklayıcı işlevlerini çağırma.

Bu belgede (veya
perldebguts) yalnızca dahili kullanım için kabul edilir ve bu nedenle değişikliğe tabidir.
haber verilmeksizin

Taleb Destek / Tarihçe in the Debugger
Gönderildiği gibi, sağlanan tek komut satırı geçmişi, aşağıdakileri kontrol eden basit bir geçmiştir:
önde gelen ünlem işaretleri. Ancak, Term::ReadKey ve Term::ReadLine'ı yüklerseniz
CPAN'dan modüller (Term::ReadLine::Gnu, Term::ReadLine::Perl, ... gibi) sahip olacaksınız
GNU'ya çok benzeyen tam düzenleme yetenekleri taleb(3) sağlar. Bunları şurada arayın
modüller/modül/Terim CPAN'daki dizin. Bunlar normal desteklemiyor vi komut satırı
düzenleme ama.

Sözcük değişkenleri de dahil olmak üzere temel bir komut satırı tamamlama da mevcuttur.
"PadWalker" modülü kuruluysa mevcut kapsam.

Readline desteği olmadan "^[[A", "^[[C", "^[[B", "^[[D"", "^H",
... ok tuşlarını ve/veya geri al tuşunu kullanırken.

editör Destek için Hata ayıklama
GNU'nun sürümüne sahipseniz emacs sisteminizde yüklü, ile etkileşime girebilir
Perl hata ayıklayıcısını anımsatan entegre bir yazılım geliştirme ortamı sağlamak için
C hata ayıklayıcıları ile etkileşimler.

Emacs'ın son sürümleri, yapmak için bir başlangıç ​​dosyasıyla birlikte gelir. emacs sözdizimi gibi davran-
Perl'in sözdizimini (bazılarını) anlayan yönlendirilmiş düzenleyici. Perlfaq3'e bakın.

Kullanıcıları vi ayrıca bakmalı gayret ve gwim, boyama için fare gibi ve rüzgarlı versiyon
Perl anahtar kelimeleri.

Yalnızca Perl'in Perl'i gerçekten ayrıştırabildiğini unutmayın, bu nedenle tüm bu CASE araçları biraz yetersiz kalır.
özellikle de Perl'inizi bir C programcısının yapabileceği gibi programlamazsanız.

The Perl Profiler
Perl'in çalışması için alternatif bir hata ayıklayıcı sağlamak istiyorsanız, betiğinizi bir
iki nokta üst üste ve verilen bir paket argümanı -d bayrak. Perl'in alternatif hata ayıklayıcıları şunları içerir:
Bir CPAN dağıtımı olarak ayrı olarak sağlanan Perl profiler, Devel::NYTPrf. İle
Perl programınızı dosyada profilleyin kodum.pl, sadece yaz:

$ perl -d:NYTPrf mycode.pl

Komut dosyası sona erdiğinde, profil oluşturucu profil bilgilerinin bir veritabanını oluşturacaktır.
profil oluşturucunun araçlarını kullanarak raporlara dönüştürebilirsiniz. Görmek detaylar için.

Hata ayıklama Düzenli İfadeler


"re 'debug' kullan", Perl düzenli ifadesinin nasıl çalıştığının kanlı ayrıntılarını görmenizi sağlar.
motor çalışır. Bu tipik hacimli çıktıyı anlamak için, sadece
normal ifade eşleştirmenin genel olarak nasıl çalıştığı hakkında bir fikriniz olsun, ancak nasıl olduğunu da bilin
Perl'in düzenli ifadeleri dahili olarak bir otomatta derlenir. Bu konular
perldebguts'taki "Normal İfadelerde Hata Ayıklama" bölümünde ayrıntılı olarak incelenmiştir.

Hata ayıklama Bellek kullanım


Perl, kendi bellek kullanımını raporlamak için dahili destek içerir, ancak bu oldukça
bellek ayırmanın nasıl çalıştığını biraz anlamayı gerektiren gelişmiş bir kavram. Görmek
Ayrıntılar için perldbguts'ta "Perl Bellek Kullanımında Hata Ayıklama".

onworks.net hizmetlerini kullanarak perldebug'u çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad




×
reklâm
❤️Buradan alışveriş yapın, rezervasyon yapın veya satın alın; ücretsizdir, hizmetlerin ücretsiz kalmasına yardımcı olur.