2014-06-12 1 views
1

J'utilise le JDI pour déboguer une autre application Java en cours d'exécution.JDI - IllegalConnectorArgumentsException: Argument invalide

Ce que je fais cela fonctionne:

  1. exécuter deux applications utilisant Eclipse. Le débogueur est lancé avec les options suivantes VM:

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 
    
  2. L'autre application se connecte à la prise sur le port 4000 et suit les procédures normales (points de rupture, etc.) pour obtenir une valeur d'une variable locale.

  3. Fonctionne correctement et me donne cette valeur.

Ce que je veux faire maintenant:

Au lieu d'utiliser Eclipse pour lancer deux processus, je lance un dans Eclipse, et que Process utilise un ProcessBuilder pour lancer un autre avec les arguments suivants:

String[] args1 = {getJavaDir(),"-cp",classpath,"-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000", "processII.Main2"}; 
ProcessBuilder builder = new ProcessBuilder(args1); 
builder.directory(directory); 
Process process = builder.start(); 

Le processus démarre avec succès. Cependant, lorsque je tente d'y accéder par le premier processus, je reçois l'erreur suivante:

com.sun.jdi.connect.IllegalConnectorArgumentsException: Argument invalid 

regardé ceci en ligne, et il y a peu d'informations sur ce que l'exception est.

J'apprécierais toute aide pour déterminer quel est le problème!

Répondre

0

Cette exception est throw lorsqu'il y a une erreur sur les paramètres du connecteur pour déboguer la JVM. Je pense que vos paramètres de débogage doivent aller dans le même argument ensemble au lieu de deux arguments distincts (mis -Xdebug avec -Xrunjdwp... sur le même argument), essayez avec:

String[] args1 = {getJavaDir(),"-cp",classpath,"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000", "processII.Main2"}; 
ProcessBuilder builder = new ProcessBuilder(args1); 
builder.directory(directory); 
Process process = builder.start(); 

Hope this helps,