La distanță de depanare Java-aplicații cu Eclipse

depanare de la distanță poate fi util pentru dezvoltarea de aplicații, de exemplu în dezvoltarea de programe pentru calculatoarele slabe care nu pot sprijini mediul de dezvoltare, depanare sau programe de calculator specializate, cum ar fi Web-servere care împiedică întreruperea serviciului. Alte exemple - Java aplicații care rulează în memorie scăzut sau cu un procesor slab sisteme, cum ar fi dispozitive mobile, o situație în care un dezvoltator vrea să se separe de sistem pentru dezvoltarea de aplicații de pe sistemul în care aplicația va rula, etc.

Cerințe preliminare

Porniți programul de configurare

Dacă nu ați instalat încă dezvoltarea v3.4 IDE Eclipse (Ganymede), descărcați-l. Eliberarea Ganymede în configurația de lansare de la distanță aplicații adăugate obiect conector, o priză de ascultare (conector priză-ascultare) bazate pe Java. Noul Eclipse conector obiect, un soclu de ascultare, vă permite să porniți depanatorul Java, care ascultă pentru conexiunile de pe soclu specificat. Programul depanat poate fi rulat din opțiunile de linie de comandă care specifică o conexiune la debugger. Anterior Ganymede acceptat numai conector obiect pentru conectarea la o priză (conector atașarea soclu), iar programul fiind depanate a fost rulat ca o gazdă care se conectează la debugger. de lucru mobile ca gazdă nu este posibilă din cauza lipsei de memorie și putere de procesare.

Pentru depanarea la distanță, trebuie să aveți Java Virtual Machine (JVM) V5.0 sau mai târziu, de exemplu, IBM® J9 sau Sun Microsystems Java Development Kit SE (JDK). Acest articol se va concentra pe depanarea la distanță, mai degrabă decât capacitățile de instrumente comune de depanare în Eclipse. A se vedea Resurse pentru mai multe informații despre depanarea declarat în Eclipse, și în cazul în care pentru a găsi software-ul de mai sus-menționat.

Introducere în JPDA

acronimele utilizate frecvent

  • JDI - Java Debug Interface (Java Debug Interface)
  • JDT - Java Development Tools (Instrumente de dezvoltare Java)
  • JDWP - Java Debug Protocol Wire (protocol de Java informații de depanare)
  • JPDA - Java Platform Depanator Arhitectura (Debugger Arhitectura pe platforma Java)
  • JVM - Java Virtual Machine (Java Virtual Machine)
  • JVMDI - JVM Debug Interface (interfață de depanare Java Virtual Machine)
  • JVMTI - JVM Tool Interface (Java mașină virtuală interfață instrument)
  • VM - Virtual Machine (VM)

Tehnologia Java Platform Architecture Debugger (JPDA) al companiei Sun Microsystems - este o arhitectură cu mai multe nivele, care îl face ușor pentru a depana aplicații Java în toate situațiile. Tehnologia JPDA este format din două interfețe (JVMTI și JDI, respectiv), protocolul JDWP și două componente software, care le leagă împreună (partile server si client). Acesta este conceput pentru depanare în orice mediu. JPDA funcționează nu numai pe computere desktop, ci și pe platforme embedded.

1. listarea Debugger Arhitectura pe platforma Java

Prin urmare, orice instrumente terțe părți și mașini virtuale bazate pe JPDA, va comunica fără probleme. Această arhitectură client-server vă permite să depana programele Java de pe computerul local, care rulează Java-platformă, sau chiar să conducă la depanare de la un computer la distanță pe rețeaua locală.

Înainte de a începe să vorbim despre depanare script-uri, trebuie să vă familiarizați cu doi termeni utilizați în documentația JPDA: conector (conector - conector) și transport (transport - dirijor). Conector - o abstracție introdusă în JDI și utilizat pentru a stabili o conexiune între depanator de aplicații și mașina virtuală țintă. Transportul controlează modul în care accesul la aplicații de date și transfer de date între client și partea de server. Conectorii sunt atașate la anumite tipuri de transporturi și moduri de conectare. În punerea în aplicare a Soarelui JPDA, există două mecanism de transport susținut de Microsoft® Windows®: transport de soclu (transport priză) și de transport folosind memoria partajată (de transport de memorie partajată). Următoarele tipuri de conectori:

  • obiect conector pentru utilizare cu prize (conector atașare priză)
  • conector obiect funcționează cu un (conector partajat memorie atașare) memorie partajată
  • obiect soclu conector ascultare (conector priză-ascultare)
  • conector obiect asculta de memorie partajată (shared-memorie de ascultare conector)
  • obiect Connector pentru a fi rulat din linia de comandă (linia de comandă lansare conector)

Atunci când se stabilește o legătură între aplicația depanator și mașina virtuală țintă, o parte acționează ca un server și așteaptă o conexiune. După un timp ce cealaltă parte este conectată la programul așteaptă pentru o conexiune, și stabilește o conexiune. Conexiunile permit programul-debugger și mașina virtuală țintă pentru a acționa ca un server. procesele pot fi difuzate cooperante pe același sistem sau pe computere diferite.

Problema de depanare la distanță Java-programe nu este în interfața client al debugger extern și depanarea la distanță de server-side. Din păcate, informații cu privire la acest subiect în sistemul de ajutor Eclipse prezente în cantități insuficiente. De fapt, JDI și JVMTI sprijinit de Eclipse și Java mediu de rulare. Doar o singură arhitectură componentă poate provoca probleme - este raportul JDWP care conține informațiile pentru a comunica cu JVMTI și JDI. JDWP conține mai mulți parametri care au fost adăugate la aplicațiile bazate pe Java de apel de la distanță. Mai jos sunt listate câteva dintre parametrii utilizați în acest articol.

-Xdebug Permite depanare. -Xrunjdwp: Se încarcă configurația JDWP a unei mașini virtuale. În acest caz, pentru schimbul de informații cu aplicația debugger externă folosind un transport și JDWP-protocoale. subparameters specifice sunt descrise mai jos.

Incepand cu Java V5 în loc -Xdebug -Xrunjdwp și puteți utiliza -agentlib: jdwp. Dar dacă doriți să vă conectați la o versiune mașină virtuală mai mică decât V5, puteți folosi numai opțiunea -Xdebug și -Xrunjdwp. Mai jos sunt parametrii scurte descrieri -Xrunjdwp.

Pentru mai multe informații despre fiecare setare, consultați documentația JPDA (a se vedea. Resurse).

Listarea 2 prezintă un exemplu de a rula mașini virtuale în depanare și conectați priza stand-by pe portul 8765.

Listarea 2. țintă VM acționează ca un server de depanare

Listarea 3 arată cum să se alăture unei aplicații care rulează depanator folosind un soclu pe 127.0.0.1 gazdă și portul 8000.

Listarea 3. Target VM acționează ca un client de depanare

Posibilitatea de depanare la distanță în Eclipse

Eclipse mediu de dezvoltare - este o componenta client a interfeței cu utilizatorul Java-debugger grafic. Punerea în aplicare a JDI extrase din pachetul org.eclipse.jdt.debug. Acest articol nu discuta detaliile punerii în aplicare a JDI. A se vedea Resurse pentru informații despre tehnologia Eclipse JDT și Java JDI.

Primul lucru pe care trebuie să știți - ce tip de conector oferit în Eclipse ar trebui să fie utilizat. Pentru a afla ce tipuri de conexiuni la distanță acceptate de Eclipse, puteți adăuga un tip de configurație de lansare a aplicației Remote Java (Remote aplicație bazată pe Java), folosind meniul Eclipse Run (Start)> Debug Configurațiile. (Configurație Debug), apoi selectați tipul de conector din lista drop-down. Eliberarea Ganymede acceptă două tipuri de conectori:

  • Socket Attach (pentru conexiuni socket)
  • Socket Asculta (pentru a crea un socket care poate fi conectat)

Pentru așteaptă conector pentru o conexiune pe un soclu (conector priză-ascultare) Eclipse mașină virtuală ca un server, care va trebui să se conecteze la distanță aplicații bazate pe Java. Pentru conector care se conectează la o priză (conector-atașarea socket) serverul este ținta mașinii virtuale. nu există nici o diferență între cele două tipuri de conectori, iar utilizatorul poate alege oricare dintre ele pentru a depana aplicația. Ca o regulă, din cauza resurselor de calcul necesare ca un server de depanare este utilizat mai rapid și mai puternic calculator.

Înainte de depanare aplicații bazate pe Java, trebuie să vă asigurați că aplicațiile sunt incluse pentru opțiunile de depanare la distanță. În cazul în care aceste informații nu sunt disponibile, în cursul depanare există un mesaj de „informații Debug nu este disponibilă“ (informații de depanare nu este disponibil) sau „Nu se pot instala breakpoint din cauza numărului liniei lipsă“ (este imposibil să se stabilească un punct de întrerupere din cauza lipsei unui număr de linie). Modificarea setărilor este posibilă prin meniul Eclipse: Window (fereastra)> Preferințe (Setări)> Java> Compiler (compilator).

Figura 1. Setări de remediere a erorilor în Eclipse


Debug o aplicație la distanță

Acum puteți începe aplicații de depanare la distanță. Pentru a face acest lucru, urmați acești pași:

1. Crearea unui Java proiect cu o clasă simplă Creați o clasă simplă pentru depanare exemplu. Listarea 4 prezintă un exemplu de cod pentru această clasă.

Listarea 4. Exemplu de cod pentru depanare

2. Setați un punct de întrerupere Setați un punct de întrerupere în codul. În acest exemplu, un punct de întrerupere este setat la linia System.out.println ( „Acesta este un test.“);.

Figura 2. Setarea punctelor de întrerupere în Eclipse

3. debug locală aplicația înainte de depanare aplicația, trebuie să se asigure că acest proiect set de opțiuni de depanare, așa cum se arată în figura 1. Debug aplicarea la nivel local este opțională, dar trebuie să se asigure că toate informațiile de depanare sunt disponibile. Pentru a face acest lucru, faceți clic dreapta pe proiectul Java, selectați Debug Ca (debug ambele), apoi selectați opțiunea Java Application (Java-aplicație) (a se vedea. Figura 3). În cazul în care executarea de aplicare oprit la un punct de întrerupere, informațiile de depanare este prezent și este configurat corect. Puteți folosi alte caracteristici depanare, cum ar fi afișarea stiva de depanare, variabile, valori critice de control, etc.

Figura 3. depanare aplicație locală

4. Export Java-proiect Vom folosi această aplicație ca un exemplu de depanare. Pentru a face acest lucru, faceți clic-dreapta pe Java-proiect, selectați Export (export), apoi Java. apoi fișier JAR (JAR-fișier) sau un fișier JAR Runnable (executabil JAR-fișier) pentru a exporta proiectul. JAR-fișier va fi generat în locația specificată. În cazul în care codul sursă Java nu este același lucru ca și aplicația fiind depanat, funcția de depanare nu va funcționa corect. 5. rula manual aplicația bazată pe Java Pentru a face acest lucru, deschideți consola și rulați manual aplicația pentru a vă asigura că mediul de execuție Java este configurat corect.

Listarea 5. aplicații de apel Java

6. depanare de la distanță o aplicație pentru care, trebuie să copiați fișierul JAR în locația dorită de pe computerul la distanță, sau chiar pe computerul local, determina serverul de depanare și clientul să se conecteze la ea. O simplă aplicație bazată pe Java poate rula ca un server de depanare sau client. În funcție de configurația în Eclipse poate selecta tipul de conexiune: Socket Atașați sau Socket Listen. Următoarele două secțiuni va explica modul de a rula aplicația ca un client sau server.

Target VM acționează ca un server de depanare

În exemplul următor, la distanță acte de aplicații bazate pe Java ca un server de depanare și așteaptă o conexiune la o priză de pe portul 8000. țintă mașina virtuală să fie suspendate până când, până când atașați un depanator.

Listarea 6. Un exemplu de utilizare a mașinii virtuale pentru a conecta modul de așteptare la mufa din Eclipse
Figura 4. Configurarea conexiunii la serverul soclu de depanare


Pentru a opri mașina virtuală pe care doriți să vă conectați, pentru a depana meniul aplicației, selectați Permiteți terminarea VM la distanță (pentru a permite dezactivarea mașinii de la distanță).

Figura 5. Butonul de oprire în Eclipse


Target VM acționează ca un client de depanare

Al doilea exemplu - este de a utiliza o simplă aplicație Java care acționează ca un client de depanare, precum și actele Debugger externe ca un server de depanare. Eclipse să aștepte pentru conexiuni folosind modul prize, care pot fi conectate (priza asculta-mode). depanator externe trebuie să fie început devreme pentru a incepe sa asculte la portul specificat. Figura 6 arată setările de configurare pentru conexiuni stand-by.

Figura 6. Configurare pentru a crea un socket care poate fi conectat


Dacă apăsați butonul Debuger (debug) de pe bara de instrumente Eclipse, bara de stare se va afișa un mesaj „de așteptare pentru vm să se conecteze la portul 8000.“ (de așteptare pentru conexiuni pe portul 8000). Apoi, aveți nevoie pentru a porni aplicația la distanță. Listarea 7 arată cum să ruleze aplicații bazate pe Java în modul client de depanare și conectați-l la o aplicație care rulează debugger, un soclu, care este situat pe 127.0.0.1 gazdă la portul 8000.

Listarea 7. Un exemplu de utilizare a mașinii virtuale în modul de așteptare de conectare în Eclipse

Dacă este făcută corect, va fi afișat un set de ferestre Eclipse utilizate pentru aplicații de depanare, precum și executarea de la distanță a unei aplicații Java este în mod normal oprită. Acest lucru este similar cu pasul 3 la depanare local (vezi. Figura 3). În această etapă se poate utiliza funcțiile de depanare standard, cum ar fi setarea de breakpoint si valori, executie pas, etc.

concluzie

Articolul a arătat modul în care puteți utiliza built-in tipuri de configurații pentru aplicații Eclipse bazate pe Java de la distanță, pentru a permite depanarea la distanță a aplicațiilor. S-a arătat cum se configurează aplicații bazate pe Java pentru a permite depanarea la distanță, și oferă informații cu privire la ce tipuri de conectori obiecta suporta Eclipse. În cele din urmă, sa arătat cum să aplice această tehnologie pentru proiecte reale.

Obțineți produse și tehnologii

  • Java 2 Standard Edition V5 sau versiuni mai noi disponibile pe Sun Microsystems Web-site-ul. (RO)
  • Cele mai recente versiuni ale produselor bazate pe tehnologia Eclipse, la portalul IBM alphaWorks. (RO)
  • Descarca Platforma Eclipse și alte proiecte de web-site-ul Eclipse Foundation. (RO)
  • Descărcați versiunile de evaluare a produselor IBM și de a obține acces la instrumente pentru dezvoltarea de aplicații și de depanare precum și middleware DB2®, Lotus®, Rational, Tivoli® și WebSphere®. (RO)
  • Îmbunătățirea proiectul de dezvoltare open source, cu software-ul de încercare de la IBM. care poate fi descărcat de pe site-ul sau comandate pe DVD. (RO)
  • software-ul de încercare IBM. versiune de încercare a dezvoltator de software, care poate fi descărcat de pe pagina de developerWorks. (RO)
  • Ia parte la forumul de discuții.
  • Newsgroup Eclipse Platforma - este primul loc unde să meargă pentru a discuta probleme legate de Eclipse. (Selectarea acestei link va începe să citiți grupuri de știri Usenet și programul implicit se va deschide o eclipse.platform secțiune.) (EN)
  • Știri pe grupuri IDE Eclipse conține o mulțime de informații pentru oricine este interesat de utilizarea și extinderea Eclipse. (RO)
  • Exploreaza blog developerWorks comunitate. forumurile developerWorks sau asculta developerWorks podcast'y, pentru a ține la curent cu cele mai recente tendințe în tehnologie. (EN)