PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : jvm / jdb problem



pucki
28-01-2010, 16:03
hi,

ich habe hier ein etwas kniffeliges Problem mit dem Debugger ...

hier mein hoch kompliziertes Programm das ich debuggen möchte:


public class Main {
public static void main( String[] args ) {
System.out.println("hello world");
while(true);

}
}

folgendes läuft ohne Probleme:


javac Main.java
java Main

wie erwartet erfolgt die Ausgabe von "hello world"

nun der Versuch das ganze zu debuggen:


jdb Main
Initializing jdb ...
> run
run Main
VM start exception: VM initialization failed for: /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,address=geene:45295,s uspend=y Main

ERROR: transport error 202: connect failed: Verbindungsaufbau abgelehnt
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)

Fatal error:
Target VM failed to initialize.


Der hostname lässt sich auflösen, und das in beide Richtungen. wobei bei der Abfrage der IP - Adresse die domain mit dran hängt. (geene.xxx.xxx)

Kurzinfo zum System:
debian testing



java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)


komplett neu installiert installiert ...

grüße

reinhard

pucki
29-01-2010, 15:43
zur Info:



geene:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
geene:~#



geene:/etc/alternatives# ll *java* && ll jdb
lrwxrwxrwx 1 root root 36 28. Jan 00:33 java -> /usr/lib/jvm/java-6-sun/jre/bin/java
lrwxrwxrwx 1 root root 46 28. Jan 00:33 java.1.gz -> /usr/lib/jvm/java-6-sun/jre/man/man1/java.1.gz
lrwxrwxrwx 1 root root 33 28. Jan 00:33 javac -> /usr/lib/jvm/java-6-sun/bin/javac
lrwxrwxrwx 1 root root 43 28. Jan 00:33 javac.1.gz -> /usr/lib/jvm/java-6-sun/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 35 28. Jan 00:33 javadoc -> /usr/lib/jvm/java-6-sun/bin/javadoc
lrwxrwxrwx 1 root root 45 28. Jan 00:33 javadoc.1.gz -> /usr/lib/jvm/java-6-sun/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 33 28. Jan 00:33 javah -> /usr/lib/jvm/java-6-sun/bin/javah
lrwxrwxrwx 1 root root 43 28. Jan 00:33 javah.1.gz -> /usr/lib/jvm/java-6-sun/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 33 28. Jan 00:33 javap -> /usr/lib/jvm/java-6-sun/bin/javap
lrwxrwxrwx 1 root root 43 28. Jan 00:33 javap.1.gz -> /usr/lib/jvm/java-6-sun/man/man1/javap.1.gz
lrwxrwxrwx 1 root root 40 28. Jan 00:33 java-rmi.cgi -> /usr/lib/jvm/java-6-sun/bin/java-rmi.cgi
lrwxrwxrwx 1 root root 39 28. Jan 00:33 java_vm -> /usr/lib/jvm/java-6-sun/jre/bin/java_vm
lrwxrwxrwx 1 root root 38 28. Jan 00:33 javaws -> /usr/lib/jvm/java-6-sun/jre/bin/javaws
lrwxrwxrwx 1 root root 48 28. Jan 00:33 javaws.1.gz -> /usr/lib/jvm/java-6-sun/jre/man/man1/javaws.1.gz
lrwxrwxrwx 1 root root 31 28. Jan 00:33 jdb -> /usr/lib/jvm/java-6-sun/bin/jdb



hier noch die Datei /etc/hosts


geene:/etc# cat hosts
127.0.0.1 localhost
127.0.1.1 geene.local geene
#1xx.1xx.1x.6 geene.local geene

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

die 2. Zeile wurde von Xorg hinzugefügt,
die 3. Zeile fand im Zuge der Problemsuche Einzug in die Datei.

grüße

anda_skoa
29-01-2010, 16:18
Überprüf mal mit netstat, ob auf diesem Port ein Listener Socket ist, also

netstat -ltp | grep portnummer

Eventuell bindet der Debugger auch nicht auf allen Interfaces, oder ähnliches

Ciao,
_

pucki
30-01-2010, 17:06
hi,

jain ...

wenn ich jdb Main starte, dann nicht und nach dem run steigt er zu schnell aus um das zu sehen ...

wenn ich die vm wie in man jdb beschrieben starte, dann sehe ich die vm, kann aber trotzdem nicht connecten ...



jdb -attach 8000
java.net.SocketException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl .java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSoc ketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.j ava:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.j ava:366)
at java.net.Socket.connect(Socket.java:525)
at com.sun.tools.jdi.SocketTransportService.attach(So cketTransportService.java:204)
at com.sun.tools.jdi.GenericAttachingConnector.attach (GenericAttachingConnector.java:98)
at com.sun.tools.jdi.SocketAttachingConnector.attach( SocketAttachingConnector.java:72)
at com.sun.tools.example.debug.tty.VMConnection.attac hTarget(VMConnection.java:358)
at com.sun.tools.example.debug.tty.VMConnection.open( VMConnection.java:168)
at com.sun.tools.example.debug.tty.Env.init(Env.java: 64)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java: 1010)

Fatal error:
Unable to attach to target VM.

pucki
30-01-2010, 19:58
problem gefunden ... man sollte auf der richtigen Seite nachschauen ...

http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=560044

grüße

Reinhard