2013-07-13 10 views
9

Come si attiva e disattiva il debug all'interno del programma Java? Come si attiva e disattiva il debug senza ricomporre il programma java?Come eseguire il debug di un programma Java senza utilizzare un IDE?

+4

Questo è ciò che è stato registrato per la registrazione. Puoi facilmente e semplicemente impostare lo stato di registrazione. –

+2

Poco chiaro. Cosa vuoi fare esattamente? Come si fa a desidera eseguire il debug? – fge

+2

Sono d'accordo con @HovercraftFullOfEels. Utilizzare la registrazione e il livello di log è impostato su quello che vuoi. –

risposta

2

Senza usare IDE per eseguire il debug

1) si può scrivere il programma Java con asserzioni. Quando vuoi, puoi abilitarli/disabilitarli.

2) è possibile utilizzare i registri configurati con log4j.properties. Nel programma Java è possibile specificare informazioni di debug e log ogni volta che si desidera possibile semplice configurare in log4j.properties quando si desidera visualizzare il debug o informazioni logs ecc ...

+0

Come usiamo il logger ?? –

+1

facilmente è possibile configurare log4j-1.3alpha0.jar, file log4j.properties e b) org.apache.log4j.Logger logs = Logger.getLogger (MyJavaFile.class); logs.info ("questo è il registro delle informazioni"); logs.debug ("questo registro di debug"); (tutti i System.out.pritnln() possono essere utilizzati in log.info() esempio logs.info ("nome utente" + nome utente); ect ...) in log4j.properties è possibile specificare: log4j.rootLogger = INFO o log4j.rootLogger = DEBUG – Akshat

+0

@akshat ... grazie ha aiutato molto ... –

1

Utilizzare jdb per eseguire il debug dalla riga di comando.

Ciò detto, non ho idea di cosa significhi "attivare e disattivare il debug".

+1

Alcune lingue richiedono il supporto del debugger da richiedere al momento della compilazione. Non in fase di runtime come java. –

11

Un'impostazione per la macchina virtuale Java consente il debugger ad es. jdb da allegare. Vedere http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

Questo è il bit importante:

Esecuzione MyClass in una JVM con il debug abilitato:

java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass 

utilizzando il debugger jdb

jdb -attach jdbconn 

Nota: queste impostazioni delle opzioni sono per una connessione JVM < -> debugger sulla macchina locale tramite memoria condivisa, altre impostazioni utili consentono di connettersi a una JVM su una macchina remota tramite prese di rete.

+2

Possibili cose che il poster originale aveva in mente: 1.) Accensione e spegnimento dell'output di logging 2.) compilazione con aggiunta di informazioni di debug (simile a C/C++). – mvw

+0

È fantastico che tu stia cercando di aiutare il richiedente. Tuttavia, in alcuni casi lasciare una risposta con un solo link può essere dannoso. Mentre la tua risposta è buona ora, se il collegamento dovesse mai morire, la tua risposta perderebbe il suo valore. Quindi sarà utile se riassumi il contenuto dell'articolo nella tua risposta. Vedi [this] (http://goo.gl/wQTjc) per chiarimenti. – pascalhein

1

ci sono due cose che dovete considerare:

  • è necessario compilare il codice una sola volta per poter disporre delle informazioni di debug; e per impostazione predefinita, vengono generate le informazioni di debug del file sorgente e del numero di riga (documentation);
  • la possibilità di eseguire il debug o non è controllata quando si richiama la JVM.

Per JVM di Oracle, questo insieme di opzioni permetterà di collegare un debugger attuazione JDWP (Java Debug Wire Protocol) sulla porta 12345 (TCP):

-Xdebug -Xrunjdwp:server=y,suspend=n,transport=dt_socket,port=12345 

Annotare il suspend=n; se si fa suspend=y, la JVM non verrà eseguito a meno che effettivamente collegare un debugger ...

Infine, un buon collegamento che spiega gli angoli dietro JDWP, JVM [DPT] I: here

Here è anche un tutorial per jdb, già citato da altre risposte.

Problemi correlati