@@ -62,59 +62,66 @@ public CompletableFuture<Response> handle(Command command, Arguments arguments,
6262 context .setStepFilters (attachArguments .stepFilters );
6363 context .setLocalDebugging (isLocalHost (attachArguments .hostName ));
6464
65+ Map <String , Object > traceInfo = new HashMap <>();
66+ traceInfo .put ("localAttach" , context .isLocalDebugging ());
67+
6568 IVirtualMachineManagerProvider vmProvider = context .getProvider (IVirtualMachineManagerProvider .class );
6669 vmHandler .setVmProvider (vmProvider );
6770 IDebugSession debugSession = null ;
6871 try {
69- logger .info (String .format ("Trying to attach to remote debuggee VM %s:%d ." , attachArguments .hostName , attachArguments .port ));
70- debugSession = DebugUtility .attach (vmProvider .getVirtualMachineManager (), attachArguments .hostName , attachArguments .port ,
71- attachArguments .timeout );
72- context .setDebugSession (debugSession );
73- vmHandler .connectVirtualMachine (debugSession .getVM ());
74- logger .info ("Attaching to debuggee VM succeeded." );
75- } catch (IOException | IllegalConnectorArgumentsException e ) {
76- throw AdapterUtils .createCompletionException (
77- String .format ("Failed to attach to remote debuggee VM. Reason: %s" , e .toString ()),
78- ErrorCode .ATTACH_FAILURE ,
79- e );
80- }
72+ try {
73+ logger .info (String .format ("Trying to attach to remote debuggee VM %s:%d ." , attachArguments .hostName , attachArguments .port ));
74+ debugSession = DebugUtility .attach (vmProvider .getVirtualMachineManager (), attachArguments .hostName , attachArguments .port ,
75+ attachArguments .timeout );
76+ context .setDebugSession (debugSession );
77+ vmHandler .connectVirtualMachine (debugSession .getVM ());
78+ logger .info ("Attaching to debuggee VM succeeded." );
79+ } catch (IOException | IllegalConnectorArgumentsException e ) {
80+ throw AdapterUtils .createCompletionException (
81+ String .format ("Failed to attach to remote debuggee VM. Reason: %s" , e .toString ()),
82+ ErrorCode .ATTACH_FAILURE ,
83+ e );
84+ }
8185
82- Map <String , Object > options = new HashMap <>();
83- options .put (Constants .DEBUGGEE_ENCODING , context .getDebuggeeEncoding ());
84- if (attachArguments .projectName != null ) {
85- options .put (Constants .PROJECT_NAME , attachArguments .projectName );
86- }
87- // TODO: Clean up the initialize mechanism
88- ISourceLookUpProvider sourceProvider = context .getProvider (ISourceLookUpProvider .class );
89- sourceProvider .initialize (context , options );
90- // If the debugger and debuggee run at the different JVM platforms, show a warning message.
91- if (debugSession != null ) {
92- String debuggeeVersion = debugSession .getVM ().version ();
93- String debuggerVersion = sourceProvider .getJavaRuntimeVersion (attachArguments .projectName );
94- if (StringUtils .isNotBlank (debuggerVersion ) && !debuggerVersion .equals (debuggeeVersion )) {
95- String warnMessage = String .format ("[Warn] The debugger and the debuggee are running in different versions of JVMs. "
96- + "You could see wrong source mapping results.\n "
97- + "Debugger JVM version: %s\n "
98- + "Debuggee JVM version: %s" , debuggerVersion , debuggeeVersion );
99- logger .warning (warnMessage );
100- context .getProtocolServer ().sendEvent (Events .OutputEvent .createConsoleOutput (warnMessage ));
86+ Map <String , Object > options = new HashMap <>();
87+ options .put (Constants .DEBUGGEE_ENCODING , context .getDebuggeeEncoding ());
88+ if (attachArguments .projectName != null ) {
89+ options .put (Constants .PROJECT_NAME , attachArguments .projectName );
10190 }
91+ // TODO: Clean up the initialize mechanism
92+ ISourceLookUpProvider sourceProvider = context .getProvider (ISourceLookUpProvider .class );
93+ sourceProvider .initialize (context , options );
94+ // If the debugger and debuggee run at the different JVM platforms, show a warning message.
95+ if (debugSession != null ) {
96+ String debuggeeVersion = debugSession .getVM ().version ();
97+ String debuggerVersion = sourceProvider .getJavaRuntimeVersion (attachArguments .projectName );
98+ if (StringUtils .isNotBlank (debuggerVersion ) && !debuggerVersion .equals (debuggeeVersion )) {
99+ String warnMessage = String .format ("[Warn] The debugger and the debuggee are running in different versions of JVMs. "
100+ + "You could see wrong source mapping results.\n "
101+ + "Debugger JVM version: %s\n "
102+ + "Debuggee JVM version: %s" , debuggerVersion , debuggeeVersion );
103+ logger .warning (warnMessage );
104+ context .getProtocolServer ().sendEvent (Events .OutputEvent .createConsoleOutput (warnMessage ));
105+ }
102106
103- EventRequest request = debugSession .getVM ().eventRequestManager ().createVMDeathRequest ();
104- request .setSuspendPolicy (EventRequest .SUSPEND_NONE );
105- long sent = System .currentTimeMillis ();
106- request .enable ();
107- long received = System .currentTimeMillis ();
108- logger .info ("Network latency for JDWP command: " + (received - sent ) + "ms" );
109- UsageDataSession . recordInfo ("networkLatency" , (received - sent ));
110- }
107+ EventRequest request = debugSession .getVM ().eventRequestManager ().createVMDeathRequest ();
108+ request .setSuspendPolicy (EventRequest .SUSPEND_NONE );
109+ long sent = System .currentTimeMillis ();
110+ request .enable ();
111+ long received = System .currentTimeMillis ();
112+ logger .info ("Network latency for JDWP command: " + (received - sent ) + "ms" );
113+ traceInfo . put ("networkLatency" , (received - sent ));
114+ }
111115
112- IEvaluationProvider evaluationProvider = context .getProvider (IEvaluationProvider .class );
113- evaluationProvider .initialize (context , options );
114- IHotCodeReplaceProvider hcrProvider = context .getProvider (IHotCodeReplaceProvider .class );
115- hcrProvider .initialize (context , options );
116- ICompletionsProvider completionsProvider = context .getProvider (ICompletionsProvider .class );
117- completionsProvider .initialize (context , options );
116+ IEvaluationProvider evaluationProvider = context .getProvider (IEvaluationProvider .class );
117+ evaluationProvider .initialize (context , options );
118+ IHotCodeReplaceProvider hcrProvider = context .getProvider (IHotCodeReplaceProvider .class );
119+ hcrProvider .initialize (context , options );
120+ ICompletionsProvider completionsProvider = context .getProvider (ICompletionsProvider .class );
121+ completionsProvider .initialize (context , options );
122+ } finally {
123+ UsageDataSession .recordInfo ("attach debug info" , traceInfo );
124+ }
118125
119126 // Send an InitializedEvent to indicate that the debugger is ready to accept configuration requests
120127 // (e.g. SetBreakpointsRequest, SetExceptionBreakpointsRequest).
0 commit comments