JDB - Hızlı Kılavuz
Hata ayıklama, bir programdaki hataları veya kusurları bulup kaldırmak ve beklenen sonuçları elde etmek için kullanılan teknik bir prosedürdür. Hata ayıklama, test ve izlemeyi içerir. Bir programın alt birimleri sıkı bir şekilde birleştirildiğinde çok karmaşıktır. Öngörülen API'leri izleyen hata ayıklayıcı araçlarını kullanarak bir programın hatalarını ayıklayabiliriz. Hata ayıklayıcı, bir kodun her yönüne adım atmanıza, tüm öğeleri incelemenize ve varsa hataları kaldırmanıza olanak tanır.
Hata Ayıklama Teknikleri
Bir Java programında hata ayıklamak için farklı teknikler vardır. Eski hata ayıklama yöntemi, konsolda izleme ifadelerini yazdıracak her segmentin sonunda yazdırma ifadelerini kullanmaktır. Aşağıdaki koda bir göz atın.
pubic class Add
{
public static void main(String ar[])
{
int a=ar[0];
system.out.println("A : " +a);
int b=ar[1];
system.out.println("B : " +b);
int c = a + b;
system.out.println("C = a + b : " +c);
}
}
Burada, iki sayı ekleyen ve çıktıyı yazdıran bir programımız var. Her adımda, programın durumunu konsola yazdıran bir yazdırma ifadesi sunduğumuza dikkat edin. Bu, bir programda hata ayıklamaya yönelik geleneksel yaklaşımdır.
Ek olarak, aşağıdaki gibi bir programda hata ayıklamak için kullanılabilecek gelişmiş kavramlara sahibiz:
- stepping
- kesme noktaları ve
- istisnalar veya izleme noktaları.
Hata Ayıklama Türleri
Bir programın hatalarını çeşitli yöntemler kullanarak ayıklayabiliriz:
- Java bayt kodunu kullanma (Java kodunun derlenmiş sürümü)
- Programların içinde yorumları kullanmak
- Çalışan bir programa sınıf eklemek
- Uzaktan hata ayıklama
- Talep üzerine hata ayıklama
- Optimize edilmiş kod hata ayıklama
Java Hata Ayıklayıcıları
Piyasada bulunan bazı Java hata ayıklayıcı örnekleri şunlardır:
- Eclipse, Netbeans, vb. Gibi IDE'ler kendi hata ayıklayıcılarını içerir (Visual cafe, Borland, JBuilder)
- Bağımsız hata ayıklayıcı GUI'leri (Jikes, Java platformu hata ayıklayıcı ve JProbe gibi)
- Komut satırı hata ayıklayıcısı (Sun's JDB)
- Not defteri veya VI tabanlı (yığın izleme)
Bu eğitici, komut satırı hata ayıklayıcısının nasıl kullanılacağını kapsar, jdb.
JDB
Java hata ayıklayıcı (JDB), Java sınıflarının komut satırındaki bir programda hata ayıklaması için kullanılan bir araçtır. Java Platform Hata Ayıklayıcı Mimarisini uygular. Java Hata Ayıklama Arayüzü (JDI) kullanarak bir Java programındaki hataları tespit etmeye ve düzeltmeye yardımcı olur.
JDK'da JDB
Aşağıdaki mimari JDB'nin JDK'daki rolünü tanımlar. Esas olarak üç birim içerir:
- Java Virtual Machine Tool Arayüzü (JVM TI)
- Java Hata Ayıklama Kablolama Havuzu (JDWP)
- Java Hata Ayıklayıcı Arayüzü (JDI)
JVM TI
VM tarafından uygulanan yerel bir programlama arayüzüdür. Sanal makinede çalışan uygulamanın durumunu inceleme ve hata ayıklama yolları sağlar. Hata ayıklama mimarisine kolayca eklenebilen bir uygulayıcıya (VM Uygulayıcı) izin verir. Ayrıca, adı verilen üçüncü taraf bir kanalı kullanır.JDWP iletişim için.
JDWP
Bilgi biçimini ve hata ayıklayıcı işlemi ile hata ayıklayıcı ön ucu arasında geçen istekleri tanımlar. Bir JDWP'ye sahip olmanın birincil amacı, hata ayıklayıcının ve hata ayıklayıcının ayrı VM'ler altında veya ayrı platformlarda çalıştıklarında iletişim kurmalarına izin vermektir.
JDI
Ön uç olarak uygulanan üst düzey bir Java arayüzüdür. Değişken bilgilerini kullanıcı kodu seviyesinde tanımlar. Tüm hata ayıklayıcı geliştirmeleri için bir JDI katmanı kullanılması önerilir. Hata ayıklayıcı JVM ile iletişim için JDWP kullanır.
Bu bölüm JDB'nin Windows ve Linux tabanlı sistemlere nasıl kurulacağını açıklamaktadır. JDB, JDK'nın bir parçasıdır. Bu nedenle JDK kurulumu komut isteminde JDB kullanmak için yeterlidir.
sistem gereksinimleri
JDB'yi yüklemek için sistem gereksinimleri şunlardır:
JDK | Java SE 2 JDK 1.5 veya üstü |
Hafıza | 1 GB RAM (önerilir) |
Disk alanı | Minimum gereklilik yok |
İşletim Sistemi Sürümü | Windows XP veya üstü, Linux |
JDB'yi sisteminize kurmak için aşağıda verilen basit adımları izleyin.
Adım 1: Java Kurulumunu Doğrulama
Öncelikle sisteminizde Java Yazılım Geliştirme Kitinin (SDK) kurulu olması gerekir. Bunu doğrulamak için, üzerinde çalıştığınız platforma bağlı olarak iki komuttan herhangi birini yürütün.
Java yüklemesi düzgün bir şekilde yapıldıysa, Java yüklemesinin mevcut sürümünü ve özelliklerini görüntüler. Aşağıdaki tabloda örnek bir çıktı verilmiştir.
Platform | Komut | Örnek Çıktı |
---|---|---|
pencereler |
Komut konsolunu açın ve şunu yazın: \>java –version |
Java sürümü "1.7.0_60" Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.7.0_60-b19) Java Hotspot (TM) 64-bit Sunucu VM (derleme 24.60-b09, karma mod) |
Linux |
Komut terminalini açın ve şunu yazın: $java –version |
java sürümü "1.7.0_25" JDK Çalışma Zamanı Ortamını açın (rhel-2.3.10.4.el6_4-x86_64) JDK 64-Bit Sunucu VM'yi açın (23.7-b01 derleme, karma mod) |
Bu öğreticinin okuyucularının sistemlerinde Java SDK 1.7.0_60 sürümünün kurulu olduğunu varsayıyoruz. Java SDK'nız yoksa, mevcut sürümünü bağlantıdan indirinhttp://www.oracle.com/technetwork/java/javase/downloads/index.html ve kurun.
Adım 2: Java Ortamını Kurma
JAVA_HOME ortam değişkenini, Java'nın makinenizde kurulu olduğu temel dizin konumunu gösterecek şekilde ayarlayın. Örneğin,
Platform | Açıklama |
---|---|
pencereler | JAVA_HOME'u C: \ ProgramFiles \ java \ jdk1.7.0_60 olarak ayarlayın |
Linux | dışa aktar JAVA_HOME = / usr / local / java |
Java derleyici konumunun tam yolunu Sistem Yoluna ekleyin.
Platform | Açıklama |
---|---|
pencereler | PATH sistem değişkeninin sonuna "C: \ Program Files \ Java \ jdk1.7.0_60 \ bin" Dizesini ekleyin. |
Linux | dışa aktar PATH = $ PATH: $ JAVA_HOME / bin / |
Komutu yürütün java -version yukarıda açıklandığı gibi komut isteminden.
3. Adım: JDB Kurulumunu Doğrulama
JDB sürümünü aşağıdaki şekilde doğrulayın:
Platform | Komut | Örnek Çıktı |
---|---|---|
pencereler |
Komut konsolunu açın ve şunu yazın: \>jdb –version |
Bu, JDB sürüm 1.6'dır (Java SE sürüm 1.7.0_60) |
Linux |
Komut terminalini açın ve şunu yazın: $jdb –version |
Bu, JDB sürüm 1.6'dır (Java SE sürüm 1.7.0_60) |
Bu bölüm JDB komutunun sözdizimini açıklamaktadır. Sözdizimi aşağıdaki gibi listelenen dört bölüm içerir:
- JDB
- option
- class
- arguments
Sözdizimi
JDB'nin sözdizimi aşağıdaki gibidir.
jdb [ options ] [ class ] [ arguments ]
JDB
Java Geliştirme Kiti'nden jdb.exe'yi çağırır.
Seçenekler
Bunlar, bir Java programında verimli bir şekilde hata ayıklamak için kullanılan komut satırı seçeneklerini içerir. JDB başlatıcısı, tüm seçenekleri (-D, -classpath ve -X gibi) ve (-attach, -listen, -launch, vb.) Gibi bazı ek gelişmiş seçenekleri kabul eder.
Sınıf
Hata ayıklama işlemlerini gerçekleştirmek istediğiniz sınıf adıdır.
Argümanlar
Bunlar, çalışma zamanında bir programa verilen girdi değerleridir. Örneğin, ana () yöntemine arg [0], arg [1].
Yukarıdaki dört bölümde seçenekler en önemlisidir.
Bu bölüm, jdb komutuyla bağımsız değişkenler olarak gönderilen JDB'de bulunan önemli seçenekleri açıklamaktadır.
Seçenekler
Aşağıdaki tablo, JDB tarafından kabul edilen seçeneklerin bir listesini içerir:
İsim | Açıklama |
---|---|
-Yardım | Yardım mesajını görüntüler ve ilgili seçenekleri listeler. |
-kaynak yolu | Yol belirtilmezse, kaynak dosyalar için verilen yolu kullanır, ardından varsayılan yolu ".", Yani geçerli dizini alır. |
- eklemek | Çalışan VM adresini belirterek hata ayıklayıcıyı çalışan VM'ye ekler. |
-dinlemek | Çalışan VM'nin standart bağlayıcı kullanarak bağlanmasını bekler. |
-dinany | Çalışan VM'nin herhangi bir adres kullanarak bağlanmasını bekler. |
-başlatmak | Hata ayıklanan uygulamayı başlangıç işinde hemen başlatır. |
-listconnectors | Bu sanal makinede bulunan bağlayıcıları listeler. |
-bağlanmak | Listelenen bağımsız değişken değerleriyle adlandırılmış bağlayıcı kullanarak hedef sanal makineye bağlanır. |
-dbgtrace | Jdb hata ayıklama bilgilerini yazdırır. |
-tclient | Uygulamayı Java Hotspot VM'de (istemci) çalıştırır. |
-tserver | Uygulamayı Java Hotspot VM'de (sunucu) çalıştırır. |
-Joption | Seçeneği, JDB'yi çalıştırmak için kullanılan Java sanal makinesine aktarır. |
Seçenekleri Komutlarla Kullanma
Aşağıdaki komutlar, yukarıdaki seçeneklerden bazılarının nasıl kullanılacağını gösterir:
-Yardım
Aşağıdaki komut JDB'yi kullanırken -help alır.
\>jdb -help
- eklemek
Aşağıdaki komut, hata ayıklayıcıyı belirtilen bir VM'ye (bağlantı noktası numarası: 1099) ekler.
\> jdb -attach 1099
-dinlemek
Aşağıdaki komut, geçerli VM'de çalışan JDB işlemini standart bağlayıcı (8008'de VM) kullanarak bekletiyor.
\>jdb -listen 8088
-dinany
Aşağıdaki komut, geçerli VM'de çalışan JDB işleminin herhangi bir bağlayıcı (şu anda çalışan bağlantı noktasında VM) kullanarak beklemesini sağlar.
\>jdb –listenany
-tclient
Aşağıdaki komut, uygulamayı Java Hotspot (™) VM'de (istemci) çalıştırır.
\>jdb –tclient
-tserver
Aşağıdaki komut, uygulamayı Java Hotspot (™) VM'de (sunucu) çalıştırır.
\>jdb -tserver
Bu bölüm, bir JDB oturumunun farklı şekillerde nasıl başlatılacağını açıklar. JDB başlatma, bir JDB oturumu başlatmak için sıklıkla kullanılan tekniktir.
Bir JDB oturumu başlatmanın iki farklı yolu vardır:
- JDB oturumuna sınıf (ana sınıf adı) ekleyerek başlatmak.
- Oturumu başlatmak için JVM'yi çalıştırmaya JDB ekleniyor.
Sınıf Ekleyerek Oturum Başlatın
Aşağıdaki komut bir JDB oturumu başlatır:
Sözdizimi
\>jdb <classname>
Misal
Adında bir sınıfımız olduğunu varsayalım TestClass. Aşağıdaki komut TestClass'tan bir JDB oturumu başlatır.
\>jdb TestClass
Bu komutu uygularsanız, belirtilen parametrelerle yeni bir Java VM başlatır. Daha sonra sınıfı yükler ve sınıfın ilk ifadesini çalıştırmadan önce onu durdurur.
Çalışan Bir JVM'ye JDB Ekleyerek Bir Oturum Başlatın
Aşağıda, JDB'yi çalışan bir JVM'ye ekleyerek bir JDB oturumu başlatmak için sözdizimi ve örnek verilmiştir.
Sözdizimi
Aşağıdaki sözdizimi JDB oturumu içindir:
-agentlib:jdwp=transport=dt_shmem,address=,server=y,suspend=n
Misal
Ana sınıf adının şöyle olduğunu varsayalım TestClassve JVM, JDB'nin daha sonra bağlanmasına izin verir. Aşağıda JVM'ye JDB ekleme komutu verilmiştir:
\>java
-agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n TestClass
Artık JDB'yi JVM'ye aşağıdaki komutla ekleyebilirsiniz:
\> jdb -attach jdbconn
Note: Burada TestClass JDB komutuna eklenmez, çünkü JDB yeni bir VM başlatmak yerine çalışan VM'ye bağlıdır.
Bu bölüm, sizi JDB'nin temel komutlarına götürür. Bir oturum başlattıktan sonra, bu komutlar bir programın hatalarını ayıklamak için kullanılır.
Hata ayıklama için kullanılan komutların listesi aşağıdadır.
İsim | Açıklama |
---|---|
yardım veya? | En önemli JDBkomut; kısa bir açıklama ile tanınan komutların bir listesini görüntüler. |
Çalıştırmak | Başladıktan sonra JDB ve gerekli kesme noktalarını ayarlayarak, bu komutu yürütmeyi başlatmak ve bir uygulamanın hatalarını ayıklamak için kullanabilirsiniz. |
devam | Bir kesme noktası, istisna veya adımdan sonra hata ayıklanan uygulamanın yürütülmesine devam eder. |
Yazdır | Java nesnelerini ve ilkel değerleri görüntüler. |
dökmek | İlkel değerler için bu komut, yazdırmayla aynıdır. Nesneler için, nesnede tanımlanan her alanın geçerli değerini yazdırır. Statik ve örnek alanları dahildir. |
İş Parçacığı | Şu anda çalışmakta olan konuları listeler. |
Konu | Mevcut iş parçacığı olacak bir iş parçacığı seçer. |
nerede | Geçerli iş parçacığının yığınını döker. |
Misal
Adında bir örnek sınıfımız olduğunu varsayalım Add aşağıdaki örnekler için:
Add.java
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Aşağıdaki komutu kullanarak bu sınıf Add.java'yı derleyin:
\>javac Add.java
Çalıştırmak
Bu komut, hata ayıklama için JDB'ye eklenen ana sınıf dosyasını yürütür. Add sınıfını çalıştırmak için aşağıdaki komutları yürütün.
\>jdb Add
initializing jdb …
>run
Bu komutları çalıştırırken aşağıdaki çıktıyı göreceksiniz:
Bu bölüm, kesme noktaları kavramını ve bir programda kesme noktalarının nasıl ayarlanacağını açıklar. Bir kesme noktası, hata ayıklama sırasında bir programın belirli bir kod satırında yürütülmesinde açık bir durdurma veya duraklatma sağlar. Yürütülürken programdaki değişkenler hakkında bilgi edinmek faydalıdır.
Sözdizimi
Aşağıdaki komut, belirli bir satır numarasında bir kesme noktası oluşturur:
> stop at <class name>:<Line no>
Aşağıdaki komut, belirli bir yöntem veya belirli bir değişken üzerinde bir kesme noktası oluşturur:
> stop in <class name>:< Method name | Variable name>
Misal
Aşağıdaki örnek, bir sınıfta nasıl kesme noktası ayarlanacağını gösterir.
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Yukarıdaki dosyayı Add.java olarak kaydedin. Bu dosyayı aşağıdaki komutu kullanarak derleyin:
\>javac Add.java
Hata ayıklama
Hata ayıklama için bir örnek verelim. Burada main () üzerinde bir kesme noktası kurarak hata ayıklama sürecini başlatıyoruz. Aşağıda, hata ayıklama sürecinde izlenecek adımlar verilmiştir:
1. Adım: Bir JDB Oturumu Başlatın
Aşağıdaki komut, hata ayıklama için Add sınıfında bir JDB oturumu başlatır:
\> jdb Add
Adım 2: Bir Kesme Noktası Belirleyin
Aşağıdaki komut, Add sınıfının main () yönteminde bir kesme noktası oluşturur.
> stop in Add.main
Kesme noktası başarıyla ayarlanırsa, aşağıdaki çıktıyı görürsünüz:
Deferring breakpoint Add.main.
It will set after the class is loaded.
>
3. Adım: Hata Ayıklamaya Başlayın
Aşağıdaki komut, Add sınıfının yürütülmesine başlar:
> run Add
Bu komutu çalıştırırsanız, aşağıdaki çıktıyı görürsünüz. Bu çıktıda, yürütmenin kesme noktası konumunda, yani main () işlevinde durduğunu görürsünüz.
Yürütme, ana yöntemin ilk satırında, yani "int a = 5, b = 6;" da durur. veya Kodda Satır no: 11. Bu bilgiyi çıktıda gözlemleyebilirsiniz.
4. Adım: Yürütmeye Devam Edin
Aşağıdaki komut programın yürütülmesine devam eder:
cont
Size kalan yürütme bölümünü ve çıktıyı aşağıdaki gibi verir:
> Add:11
The application exited
\>
Bu bölüm, bir programda hata ayıklamada Adımlama kavramının nasıl kullanılacağını açıklar. Adımlama, kodu satır satır ilerleyerek çalıştırmanıza izin veren hata ayıklayıcı özelliğidir. Bunu kullanarak, amaçlandığı gibi davrandıklarından emin olmak için kodun her satırını inceleyebilirsiniz.
Adımlama sürecinde aşağıdaki komutlar kullanılır:
- adım: sonraki yürütme satırına giden adımlar
- liste: kodun neresinde olduğunuzu inceler
- devam: kalan yürütmeye devam eder
Misal
Aşağıdaki örnek, önceki bölümde kullandığımız Add sınıfını kullanır:
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Yukarıdaki dosyayı Add.java olarak kaydedin. Bu dosyayı aşağıdaki komutu kullanarak derleyin:
\>javac Add.java
Add sınıfının main () yönteminde kesme noktasının ayarlandığını varsayalım. Aşağıdaki adımlar, Add sınıfında adımlamanın nasıl uygulanacağını gösterir.
Adım 1: İşi Gerçekleştirin
Aşağıdaki komut, Add adlı sınıfı çalıştırmaya başlar.
> run Add
Bu komutu yürütürseniz, aşağıdaki çıktıyı görürsünüz. Bu çıktıda, yürütmenin kesme noktası konumunda, yani main () yönteminde durduğunu görebilirsiniz.
Yürütme, ana yöntemin ilk satırında, yani "int a = 5, b = 6;" da durur. veya Kodda Satır no: 11. Bu bilgiyi çıktıda gözlemleyebilirsiniz.
Adım 2: Kodda Adım Adım
Aşağıdaki komut, yürütmeyi bir sonraki satıra taşır.
main[1] step
Şimdi uygulama Satır no: 12'ye geçiyor. Aşağıdaki çıktıyı göreceksiniz.
3. Adım: Kodu listeleyin
Aşağıdaki komut kodu listeler:
main[1] list
Aşağıdaki çıktıyı elde edersiniz. List komutu, program kontrolünün ulaştığı koddaki satırı size bildirmek için kullanılır. Program kontrolünün geçerli konumunu gösteren aşağıdaki ekran görüntüsündeki ok işaretine => dikkat edin.
4. Adım: Yürütmeye Devam Edin
Aşağıdaki komut kodu yürütmeye devam eder:
main[1] cont
Bu komut, kodun kalan satırlarını çalıştırmaya devam eder. Çıktı aşağıda gösterildiği gibidir:
> Add:11
The application exited
\>
Genel olarak, üç tür adım vardır:
- İçine adım
- Adım atmak
- Dışarı çıkmak
İçine adım
Bu komutu kullanarak kodun bir sonraki satırına geçebilirsiniz. Kodun bir sonraki satırı bir işlev çağrısıysa, o zaman işlevi işlevin en üst satırındaki kontrolü sürerek işleve girer.
Aşağıdaki kodda, ok işareti koddaki denetleyiciyi tanımlar.
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Eğer kullanırsanız step intokomut, denetleyici sonraki satıra geçer, yani "int c = ob.addition (a, b);". Bu satırda bir fonksiyon çağrısı varaddition(int, int) dolayısıyla denetleyici, aşağıda gösterildiği gibi ok işaretiyle toplama işlevinin en üst satırına hareket eder:
public class Add
{
public int addition( int x, int y)
-> {
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Adım atmak
Step Over aynı zamanda sonraki satırı da yürütür. Ancak sonraki satır bir işlev çağrısıysa, arka planda bu işlevi çalıştırır ve sonucu döndürür.
Bir örnek ele alalım. Aşağıdaki kodda, ok işareti koddaki kontrolü tanımlar.
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Eğer kullanırsanız step overkomut, kontrol sonraki satıra geçer, yani "int c = ob.addition (a, b);". Bu satırda bir fonksiyon çağrısı varaddition(int, int) bu nedenle, işlevin yürütülmesi arka planda yapılır ve sonuç, aşağıda gösterildiği gibi ok işaretiyle geçerli satıra döndürülür:
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
-> int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Dışarı çıkmak
Step Out sonraki satırı yürütür. Sonraki satır bir işlev çağrısıysa, bunu atlar ve işlevin yürütülmesi kodun kalan satırlarıyla devam eder.
Bir örnek ele alalım. Aşağıdaki kodda, ok işareti koddaki denetleyiciyi tanımlar.
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Eğer kullanırsanız step outkomut, denetleyici sonraki satıra geçer, yani "int c = ob.addition (a, b);". Bu satırda bir fonksiyon çağrısı varaddition(int, int) dolayısıyla fonksiyonun yürütülmesi atlanır ve kalan çalıştırma aşağıda gösterildiği gibi ok işareti ile devam eder:
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
-> int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
Bu bölüm, JDB kullanılarak istisna sınıfının nasıl işleneceğini açıklar. Genel olarak, bir program catch ifadesi olmadan bir istisna oluşturduğunda, VM istisna satırını, istisnanın nedenini yazdırır ve çıkar. Bir catch ifadesiyle istisna oluşturulmuşsa, istisna catch ifadesiyle ele alınır. Burada, sanal makine çıktıyı istisna nedeni ile yazdırır.
İstisnayı yükselten sınıf JDB altında çalışırken, aynı zamanda uncaughtistisna. Bu istisna,catch komut.
Misal
JdbException sınıfına bir örnek verelim:
public class JdbException
{
public static void main(String ar[]) throws Exception
{
int a=8, b=0;
System.out.println("Welcome");
System.out.println("Ex: "+(a/b));
}
}
Yukarıdaki dosyayı JdbException.java adıyla kaydedin. Bu dosyayı aşağıdaki komutu kullanarak derleyin:
\>javac JdbException.java
İstisnayı gidermek için aşağıda verilen adımları izleyin.
Adım 1: Sınıfı Çalıştırın
Aşağıdaki komut, adlı sınıfı çalıştırır JdbException aşağıdaki gibi:
\>jdb JdbException
>run
Bu JdbException sınıf bir istisna içerir, dolayısıyla aşağıdaki çıktıyı görürsünüz:
2. Adım: İstisnayı Yakalayın
Aşağıdaki komut istisnayı yakalar:
mian[1] catch java.lang.ArithmeticException
Size aşağıdaki çıktıyı verecektir:
Set all java.lang.ArithmeticException
3. Adım: Yürütmeye Devam Edin
Aşağıdaki komut yürütmeye devam eder. Şimdi, yakalama aritmetik istisnayı şu şekilde işler:
Bu bölüm, Eclipse'de JDB'nin nasıl kullanılacağını açıklar. Devam etmeden önce Eclipse Indigo'yu kurmanız gerekir. Eclipse Indigo'yu sisteminize kurmak için aşağıdaki adımları izleyin.
1. Adım: Eclipse'i İndirin ve Yükleyin
Eclipse'i aşağıdaki bağlantıdan indirebilirsiniz: http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2
Adım 2: Yeni Bir Proje ve Yeni Bir Sınıf Oluşturun
- Seçenekleri izleyerek yeni bir Java projesi oluşturun File-> New -> Java project.
- Olarak adlandır “sampledebug”.
- Sağ tıklayarak yeni bir sınıf oluşturun samplebebug proje.
- Seçiniz options ->new -> class
- Olarak adlandır “Add.java”
Add.java
public class Add
{
public int addition( int x, int y)
{
int z = x+y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: "+c);
}
}
3. Adım: Hata Ayıklama Perspektifini açın
Hata ayıklama perspektifini açmak için aşağıda verilen talimatları izleyin.
Eclipse IDE'de şu adrese gidin: Window -> Open perspective -> Debug. Şimdi Add.java programı için hata ayıklama perspektifini elde edersiniz. Aşağıdaki pencereyi göreceksiniz.
Hata Ayıklama Perspektifindeki Bölümler
Hata Ayıklama perspektifindeki bölümler aşağıdaki gibidir:
Kodlama Bölümü
Java kodu bu bölümde gösterilmektedir. Hata ayıklamak istediğiniz koddur, yaniAdd.java. Burada satırın önüne çift tıklayarak bir satıra bir kesme noktası ekleyebiliriz. Bu çizginin kesme noktasını gösteren bir ok sembolü olan mavi balonu bulursunuz. Aşağıdaki ekran görüntüsüne bakın; seçili alanı "1" işaretli kırmızı bir daire ile bulabilirsiniz.
- Buraya çift tıklayın. Bu satır için kesme noktası belirleyebilirsiniz.
Kesme Noktası Bölümü
Bu bölüm, program koduna ayarlanan kesme noktalarının listesini tanımlar. Burada kesme noktalarını ekleyebilir, silebilir, bulabilir ve yönetebiliriz. Aşağıdaki ekran görüntüsü kesme noktası bölümünü gösterir.
Verilen ekran görüntüsünde aşağıdaki seçenekleri gözlemleyin:
Soldaki onay kutusunu kullanarak bir kesme noktası seçebilir veya seçimi kaldırabiliriz. Burada bir kesme noktası, yani Add class-main () yöntemi kullanıyoruz.
Tek çarpı işareti "X", seçilen kesme noktasını silmek için kullanılır.
Kodunuzdaki tüm kesme noktalarını silmek için çift çarpı işareti "XX" kullanılır.
Ok işaretçisi, seçilen kesme noktasının uygulandığı koda işaret etmek için kullanılır.
Kesme noktası bölümündeki kalan işlevler aşağıdaki gibidir:
Hitcount: Denetimin bu kesme noktasına kaç kez vurduğunu gösterir. Özyinelemeli mantık için kullanılır.
Suspend thread : Mevcut konuyu seçerek askıya alabiliriz.
Suspend VM : VM'yi seçerek askıya alabiliriz.
Hata Ayıklama Bölümü
Bu bölüm, hata ayıklama işlemi için kullanılır. Hata ayıklamada kullanılan seçenekleri içerir.
Start debugging : Hata ayıklamaya başlamak için aşağıda verilen talimatları izleyin.
Sağ tıklayın code -> Tıklayın Debug as -> Tıklayın 1 Java application.
Hata ayıklama işlemi aşağıdaki ekran görüntüsünde gösterildiği gibi başlar. Sayısal rakamlar kullanılarak vurgulanan bazı seçili seçenekler içerir.
Add class main () metoduna bir kesme noktası uyguluyoruz. Hata ayıklamaya başladığımızda,controller main () yönteminin ilk satırında takılır.
İçin kullanılır Resumehata ayıklama işlemi ve geçerli kesme noktasını atlayın. Benzer şekilde çalışırcont JDB komut satırında komut.
Hata ayıklama sürecini durdurmak için kullanılır.
Benzer şekilde çalışır step inJDB komut satırında işlem. Kontrolü bir sonraki satıra taşımak için kullanılır, yani “1” noktası bir sonraki satıra geçer.
Benzer şekilde çalışır step over JDB komut satırında işlem.
Kesme noktasının hangi satıra uygulandığını görmek için kullanılır.
Eclipse IDE'de kodunuzda hata ayıklamak için verilen adımları ve bölümleri izleyin. Varsayılan olarak, her IDE bu hata ayıklama işlemini içerir.