Prototp
Taş Madencisi
- En iyi cevaplar
- 0
Merhaba arkadaşlar,
Bildiğiniz üzere java uygulamalarını ide üzerinden debug yapabiliyoruz ancak bukkit pluginlerinde, eklentinin çalıştığı ortam idemizin içerisinde olmadığı için bu pek mümkün olamıyordu. Fakat geliştirdiğim eklentileri trace etme ihtiyacı duyduğum için bir süredir bu konuda araştırma yapıyordum ve aslında bukkit pluginlerinin çalışırken debug yapmanın yapılabilir olduğunu öğrendim. Bu konuda sıkıntı çeken veya yeni başlayan arkadaşlar olabileceğini düşünerek öğrendiklerimi sizlere de paylaşmak istedim. Bu konuda internette yabancı kaynaklar da mevcut ancak bulduğum kaynaklardaki yollar biraz daha zahmetli, ben incelediğim ve denediğim yollar içerisindeki en kolay ve basit olanı sizlerle paylaşıyorum.
Debugging yapabilmek için bunlara ihtiyacınız var.
1-Ide(Anlatımımda Eclipse kullanacağım)
2-Herhangi bir server yazılımı(Craftbukkit, Spigot vb.)
3-Debug yapmak istediğiniz plugin kodları
Öncelikle serverınızı başlatmaya yarayan .sh veya .bat dosyasının içine bir java argümanı eklememiz gerekiyor.
Bu argümanı eklediğimiz zaman .sh veya .bat dosyanızın içeriği buna benzer olacaktır.
Ardından eğer spigot kullanıyorsanız eğer spigot.yml dosyasının içerisinde bulunan
bölümündeki sayıyı 1000000 gibi büyük bir sayı yapmanız gerekmektedir. Bunun sebebi ise eclipse ile plugininizi debug yaparken, breakpointlerde serverı dondurulacağından dolayı spigot serverdan yanıt alamayınca crash olduğunu düşünüp serverı kapatmaktadır. Timeout süresini arttırarak spigotun crash olduğunda kapatmasını geciktirmiş oluyoruz. 1 milyon saniye gibi büyük bir sayı girdiğimiz için o kadar süreye kadar debug işimizi halletmiş olacağız. Ancak bu ayarı hizmet verdiğiniz sunucularda kullanırsanız, olası bir crash durumunda auto-restart gibi sistemleriniz varsa çalışmasını engeller. Bu sebepten sadece plugin geliştirmek için ayrı küçük bir test serverı yapmanızda fayda var.
Son olarak yapmamız gereken ise IDE'nizi açmak ve debug ayarlamaları bölümüne gelmeniz, Eclipse kullanıyorsanız eğer aşağıdaki resimlerde gitmeniz gereken yerler gösterilmektedir.
1-Buraya bu debug profiliniz için bir isim yazmanız gerekmektedir. Bu örnekte ben DebugPlugin kullandım.
2- Projenizi seçmeniz gerekiyor. Browse tuşuna basıp hangi projenizi debug yapacaksanız onu seçiniz.
3- Connection Type: Standard (Socket Attach) olarak kalmalı
4- Host: localhost ve Port ise 1044 yapınız. Buradaki port ile yukarıda startup scriptinize eklediğiniz argümanlardaki "adress=PORT NO" ile aynı olmalıdır. Bu port numarası idenizin debug için minecraft serverınıza bağlanacağı local porttur, herhangi bir port açmanıza ihtiyaç yoktur. 25565 gibi kullanıcıların bağlanacağı bir port yazmayınız.
5-Ardından Apply tuşuna basarak kaydediyoruz ancak bu ekranı kapatmıyoruz
6-Şimdi serverımızı açıyoruz. İlk seferimiz olduğu için serverımız açılırken 5. adımda kapatmadığımız ekrandaki "Debug" butonuna basarak debug'a başlıyoruz. Bundan sonraki seferlerde direk idenizdeki debug tuşuna basarak hızlıca debug yapabilirsiniz
Herhangi bir hata yapmadıysanız serverınız açılırken konsolun ilk satırında
yazması gerekmektedir. Ayrıca debug tuşuna bastığınız zaman Connection refused hatası aldıysanız eğer yazmış olduğunuz portlar aynı olmayabilir veya serverınız açık olmayabilir, bunlara tekrar dikkat ederek tekrar deneyiniz.
Ideniz bağlandığında aşağıdaki görüntü ile karşılaşırsanız başarılı olmuşsunuz ve ide bağlanabilmiş demektir, bu noktadan sonra breakpointlerinizi koyup, oraları gözlemleyebilirsiniz. Eğer plugininizin onEnable gibi methodlarına breakpoint koyduysanız ve ideniz bağlandığında oralar geçtiyse serverınıza reload yaparak bu problemi çözebilirsiniz veya girmiş olduğunuz argümanlardaki suspend=n bölümünü suspend=y ile değiştirebilirsiniz.
Umarım anlaşılır olmuşumdur arkadaşlar, yazım hatalarım olmuşsa sizlerden özür diliyorum.
Konumun yerini doğru olduğunu düşünüyorum ancak eğer moderator arkadaşlar yanlış olduğunu düşünüyorsa konuyu kapatmak yerine uygun yere taşırlarsa sevinirim
İyi günler, kolay gelsin
Bildiğiniz üzere java uygulamalarını ide üzerinden debug yapabiliyoruz ancak bukkit pluginlerinde, eklentinin çalıştığı ortam idemizin içerisinde olmadığı için bu pek mümkün olamıyordu. Fakat geliştirdiğim eklentileri trace etme ihtiyacı duyduğum için bir süredir bu konuda araştırma yapıyordum ve aslında bukkit pluginlerinin çalışırken debug yapmanın yapılabilir olduğunu öğrendim. Bu konuda sıkıntı çeken veya yeni başlayan arkadaşlar olabileceğini düşünerek öğrendiklerimi sizlere de paylaşmak istedim. Bu konuda internette yabancı kaynaklar da mevcut ancak bulduğum kaynaklardaki yollar biraz daha zahmetli, ben incelediğim ve denediğim yollar içerisindeki en kolay ve basit olanı sizlerle paylaşıyorum.
Debugging yapabilmek için bunlara ihtiyacınız var.
1-Ide(Anlatımımda Eclipse kullanacağım)
2-Herhangi bir server yazılımı(Craftbukkit, Spigot vb.)
3-Debug yapmak istediğiniz plugin kodları
Öncelikle serverınızı başlatmaya yarayan .sh veya .bat dosyasının içine bir java argümanı eklememiz gerekiyor.
Kod:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Bu argümandaki değerler şu işe yarar
- transport=dt_socket : JVM'e bağlanırken kullanılan yol (socket bu iş için iyi bir yol, uzaktaki bir bilgisayarla debug yapmak içinde kullanılabili)
- address=1044 : TCP/IP portu
- suspend=y : Eğer 'y' ise , JVM'e debugger bağlanana kadar beklemesini söyler, eğer 'n' ise hemen çalışmaya başlar. İkisini de seçebilirsiniz, bu örnekte serverın hemen başlatılmasını seçtim ancak eğer onEnable gibi erkenden çalışan bir yeri debug etmek istiyorsanız 'y' yapabilirsiniz.
Bu argümanı eklediğimiz zaman .sh veya .bat dosyanızın içeriği buna benzer olacaktır.
Kod:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n -Xmx2G -Xms2G -jar spigot.jar
Ardından eğer spigot kullanıyorsanız eğer spigot.yml dosyasının içerisinde bulunan
Kod:
timeout-time:SAYI
Son olarak yapmamız gereken ise IDE'nizi açmak ve debug ayarlamaları bölümüne gelmeniz, Eclipse kullanıyorsanız eğer aşağıdaki resimlerde gitmeniz gereken yerler gösterilmektedir.
1-Buraya bu debug profiliniz için bir isim yazmanız gerekmektedir. Bu örnekte ben DebugPlugin kullandım.
2- Projenizi seçmeniz gerekiyor. Browse tuşuna basıp hangi projenizi debug yapacaksanız onu seçiniz.
3- Connection Type: Standard (Socket Attach) olarak kalmalı
4- Host: localhost ve Port ise 1044 yapınız. Buradaki port ile yukarıda startup scriptinize eklediğiniz argümanlardaki "adress=PORT NO" ile aynı olmalıdır. Bu port numarası idenizin debug için minecraft serverınıza bağlanacağı local porttur, herhangi bir port açmanıza ihtiyaç yoktur. 25565 gibi kullanıcıların bağlanacağı bir port yazmayınız.
5-Ardından Apply tuşuna basarak kaydediyoruz ancak bu ekranı kapatmıyoruz
6-Şimdi serverımızı açıyoruz. İlk seferimiz olduğu için serverımız açılırken 5. adımda kapatmadığımız ekrandaki "Debug" butonuna basarak debug'a başlıyoruz. Bundan sonraki seferlerde direk idenizdeki debug tuşuna basarak hızlıca debug yapabilirsiniz
Herhangi bir hata yapmadıysanız serverınız açılırken konsolun ilk satırında
Kod:
Listening for transport dt_socket at address: 1044
Ideniz bağlandığında aşağıdaki görüntü ile karşılaşırsanız başarılı olmuşsunuz ve ide bağlanabilmiş demektir, bu noktadan sonra breakpointlerinizi koyup, oraları gözlemleyebilirsiniz. Eğer plugininizin onEnable gibi methodlarına breakpoint koyduysanız ve ideniz bağlandığında oralar geçtiyse serverınıza reload yaparak bu problemi çözebilirsiniz veya girmiş olduğunuz argümanlardaki suspend=n bölümünü suspend=y ile değiştirebilirsiniz.
Umarım anlaşılır olmuşumdur arkadaşlar, yazım hatalarım olmuşsa sizlerden özür diliyorum.
Konumun yerini doğru olduğunu düşünüyorum ancak eğer moderator arkadaşlar yanlış olduğunu düşünüyorsa konuyu kapatmak yerine uygun yere taşırlarsa sevinirim
İyi günler, kolay gelsin