mIRC Hata Ayıklama: Scriptlerdeki Sorunları Bulmak ve Çözmek
İçindekiler
Script yazmanın büyük kısmı aslında hata ayıklamakla geçer. Kod ilk denemede çalışmaz, beklenmedik durumlarda bozulur veya sessizce yanlış sonuç üretir. mIRC hata ayıklama teknikleri, bu sorunları sistematik olarak bulmanızı sağlar. Rastgele değişiklikler yapıp denemek yerine yöntemli davranmak, saatlerce süren aramaları dakikalara indirir.
Hata Mesajlarını Okumak
mIRC, bir script hatası oluştuğunda durum penceresinde bir mesaj gösterir. Bu mesajı tam olarak okumak ilk adımdır; çoğu zaman sorunun ne olduğunu doğrudan söyler.
Yaygın hata mesajları ve anlamları:
| Mesaj | Anlamı | Çözüm |
|---|---|---|
| Unknown command | mIRC komutu veya alias bulunamadı | Yazım hatasını kontrol edin |
| Invalid parameters | Komuta yanlış parametre verilmiş | Komutun söz dizimini kontrol edin |
| Missing bracket | Süslü parantez kapanmamış | Parantez eşleşmesini kontrol edin |
| Invalid format | Identifier yanlış kullanılmış | Parametre sayısını kontrol edin |
| No such window | Belirtilen pencere yok | Pencere varlığını kontrol edin |
| Not connected to server | Sunucuya bağlı değilken sunucu komutu | Bağlantı kontrolü ekleyin |
Hata mesajının hangi scriptte ve hangi satırda oluştuğu da genellikle belirtilir. Bu bilgi, büyük dosyalarda doğrudan ilgili yere gitmenizi sağlar.
En Temel Araç: echo
Kodun içine geçici yazdırma satırları eklemek, en basit ama en etkili hata ayıklama yöntemidir:
alias test {
echo -a [1] Baslangic, parametre: $1
var %sonuc = $calc($1 * 2)
echo -a [2] Hesaplama sonucu: %sonuc
if (%sonuc > 10) {
echo -a [3] Buyuk dala girildi
}
else {
echo -a [4] Kucuk dala girildi
}
echo -a [5] Bitis
}
Bu satırlar size iki önemli bilgi verir: Kodun hangi noktaya kadar çalıştığı ve değişkenlerin o anki değerleri. Numaralandırılmış etiketler kullanmak, çıktıyı takip etmeyi kolaylaştırır.
Hata bulunduktan sonra bu satırları kaldırmayı veya yorum hâline getirmeyi unutmayın. Bazı scripterler bu satırları bir ayara bağlar: Ayar açıkken izleme satırları çalışır, kapalıyken sessiz kalır. Bu yaklaşım, aynı hata ayıklama altyapısını tekrar tekrar kurmanızı önler.
Komut Satırında Deneme
İki eğik çizgiyle başlayan satırlar, identifier'ları değerlendirerek çalıştırılır:
//echo -a $nick($chan,0)
//echo -a $gettok(bir iki uc,2,32)
//echo -a $iif($me isop $chan,Op,Degil)
Bir identifier'ın ne döndürdüğünden emin değilseniz, scripte yazmadan önce komut satırında deneyin. Bu alışkanlık, çok sayıda hatayı doğmadan önler. Karmaşık bir ifade yazacaksanız parçalarını tek tek deneyip sonra birleştirmek en verimli yoldur.
Sorunu Daraltmak
Bir script çalışmıyor ama hata da vermiyorsa, sorunu adım adım daraltmanız gerekir. Yöntem şudur:
- Kodu bölün: Uzun bir kod bloğunun yarısını yorum hâline getirip test edin. Sorun devam ediyorsa kalan yarıdadır, kaybolduysa yorumladığınız kısımdadır.
- Tekrarlayın: Sorunlu yarıyı tekrar yarıya bölün. Birkaç adımda sorunlu satıra ulaşırsınız.
- En küçük örneği yazın: Sorunu yeniden üreten en kısa kodu yazın. Bu, hem sorunu anlamanızı sağlar hem de yardım isteyecekseniz paylaşmanız gereken şeydir.
Bu yöntem basit görünür ama çok etkilidir; özellikle uzun scriptlerde rastgele arama yapmaktan kat kat hızlıdır.
debug Komutu
Sorun IRC protokolü düzeyindeyse, yani sunucuya giden ve sunucudan gelen mesajlarla ilgiliyse, debug komutu kullanılır:
/debug @Debug
/debug -c
/debug off
Bu komut, sunucuyla alışverilen bütün ham mesajları belirttiğiniz pencereye veya dosyaya yazar. Hangi komutun gönderildiğini, sunucunun ne cevap verdiğini ve hangi sırayla olup bittiğini görebilirsiniz.
Önemli güvenlik uyarısı: Debug çıktısı, NickServ'e gönderdiğiniz parolaları ve SASL kimlik bilgilerinizi de içerir. Bu çıktıyı kimseyle paylaşmayın; paylaşmanız gerekiyorsa parola içeren satırları mutlaka silin. Hata ayıklama bittiğinde debug'ı kapatın ve oluşan dosyayı silin.
Raw mesajları işleyen scriptler yazarken debug çıktısı vazgeçilmezdir; bkz. mIRC raw eventleri.
Yaygın Hata Türleri
Parantez hataları: mIRC'te süslü parantez yerleşimi katıdır. Açılış parantezi koşulla veya alias adıyla aynı satırda, kapanış parantezi kendi satırında olmalıdır. Bu kural ihlal edildiğinde alınan hata mesajı bazen yanıltıcı olabilir.
Değişken kapsamı: Bir yerel değişkeni tanımlandığı bloğun dışında kullanmaya çalışmak, boş değer alınmasına yol açar. Değişkenler için mIRC değişkenler yazımıza bakın.
Bağlam hataları: Bağlama bağlı identifier'ları yanlış yerde kullanmak. Bir olay içinde anlamlı olan identifier, elle çalıştırılan bir komutta boş döner.
Boşluk ve birleştirme: Metinleri birleştirirken $+ kullanmayı unutmak, istenmeyen boşluklara yol açar. Tersine, gerekli yerde boşluk bırakmamak da ifadelerin yanlış yorumlanmasına neden olur.
Olay çakışması: Aynı olay için birden fazla dosyada kod bulunması. Biri halt kullanıyorsa diğerleri hiç çalışmaz. Çakışmalar için mIRC addon çakışmaları yazımıza bakın.
Sessiz başarısızlık: Bir identifier'ın boş dönmesi ve kodun bunu kontrol etmeden devam etmesi. En zor bulunan hata türüdür çünkü hiçbir mesaj üretmez.
Test Alışkanlıkları
Hata ayıklamanın en iyi yolu, hataların oluşmasını önlemektir:
- Küçük parçalar hâlinde yazın: Her birkaç satırı yazıp test edin, yüz satırı birden yazıp sonra hata aramayın.
- Sınır durumlarını test edin: Parametre verilmediğinde, boş değer geldiğinde, beklenmedik karakterler geldiğinde ne olduğunu deneyin.
- Kendi test kanalınızı kullanın: Canlı bir kanalda test yapmak hem risklidir hem de diğer kullanıcıları rahatsız eder. Boş bir kanal açıp orada test edin.
- Yedek alın: Çalışan bir sürümü kaydedip üzerine geliştirmeye devam edin. Bozduğunuzda geri dönebilirsiniz.
- Değişiklikleri tek tek yapın: Aynı anda beş şey değiştirip test etmek, hangisinin sorun çıkardığını bulmanızı imkânsızlaştırır.
Yardım İstemek
Bir sorunu kendiniz çözemiyorsanız topluluktan yardım istemek doğaldır. Yardım almanızı kolaylaştıracak hazırlıklar:
- En küçük örneği hazırlayın: Sorunu yeniden üreten en kısa kod.
- Tam hata mesajını not edin: Mesajı kelimesi kelimesine aktarın.
- mIRC sürümünüzü belirtin: Bazı davranışlar sürüme göre değişir.
- Ne denediğinizi söyleyin: Aynı önerileri tekrar almanızı önler.
- Parolaları temizleyin: Paylaştığınız kodda ve çıktıda kişisel bilgi bırakmayın.
Gerçek Bir Senaryo
Bir scripter, kanal istatistiği tutan scriptinin bazı kullanıcıları hiç saymadığını fark ediyor. Hata mesajı yok, script çalışıyor ama sonuçlar eksik. Kodun içine izleme satırları ekliyor ve nickin hash tablosuna hangi biçimde yazıldığını görüyor: Bazı kayıtlar büyük harfle, bazıları küçük harfle. Aynı kişi nickini farklı büyük-küçük harf kombinasyonlarıyla yazdığında iki ayrı kayıt oluşuyor. Çözüm tek satır: Anahtarı oluştururken nicki küçük harfe çevirmek. İzleme satırları olmadan bu sorunu bulmak günler sürebilirdi.
Sonuç
Hata ayıklama, script yazmanın ayrılmaz parçasıdır. Hata mesajlarını dikkatle okuyun, kodun içine izleme satırları ekleyin, komut satırında deneme yapın, sorunu yarıya bölerek daraltın, protokol sorunları için debug kullanın ve en önemlisi küçük parçalar hâlinde yazıp test edin. Scriptlerinizi hızlandırmak için sıradaki rehberimiz mIRC script performansı.
IRC sorunun mu var? Kanalda birlikte çözelim.
💬 Kanala BağlanSıkça Sorulan Sorular
Script hata verdiğinde nereye bakmalıyım?
Durum penceresindeki hata mesajına bakın. Mesaj genellikle hatanın türünü ve hangi satırda oluştuğunu belirtir.
debug komutu ne işe yarar?
Sunucuyla alışverilen ham mesajları bir pencereye veya dosyaya kaydeder. Protokol düzeyindeki sorunları bulmak için kullanılır.
Script hata vermiyor ama beklediğim gibi çalışmıyor, ne yapmalıyım?
Kodun içine echo satırları ekleyerek hangi noktaya kadar çalıştığını ve değişkenlerin değerlerini kontrol edin.


