2014-06-12 5 views
1

JDI를 사용하여 실행중인 다른 Java 응용 프로그램을 디버깅하고 있습니다.JDI - IllegalConnectorArgumentsException : 잘못된 인수

내가 작품을 할 무엇 :

  1. 실행 Eclipse를 사용하여 두 개의 응용 프로그램. 디버거는 다음 VM 옵션과 함께 시작됩니다 :

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 
    
  2. 다른 응용 프로그램은 포트 4000의 소켓에 연결하고, 지역 변수의 값을 얻기 위해 (등, 중단 점) 정상 절차를 따른다.

  3. 제대로 작동하고 저에게 그 가치를 제공합니다. 내가 지금하고 싶은 무엇

:

을 대신 두 개의 프로세스를 실행하기 위해 Eclipse를 사용하여, 나는 이클립스에서 하나의 시작, 그리고 Process는 다음 인수와 함께 또 다른 하나를 시작하는 ProcessBuilder를 사용 :

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(); 

프로세스가 성공적으로 시작됩니다. 내가 처음 과정을 통해 그것을 액세스하려고 할 때, 나는 다음과 같은 오류 얻을 : 온라인이 고개를

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

, 그리고 예외가 무엇인지에 대한 약간의 정보가있다.

문제의 원인을 파악하는 데 도움이 되었으면합니다.

답변

0

이 예외는 JVM을 디버그하기 위해 커넥터 매개 변수에 오류가있는 경우에 발생합니다. 와 내가 디버그 매개 변수를 함께 대신 두 개의 인수 (같은 인수에 -Xrunjdwp...-Xdebug을 넣어) 같은 인수에 가야한다고 생각, 노력이 도움이

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(); 

희망,