Skip to content

Commit d76e7eb

Browse files
authored
fix the issue that the logger for exception doesn't record stack trace. (microsoft#34)
* add encoding settings in launch.json * always set file.encoding since default encoding may not be predictable. * modify log error style to display call stack on exception. * remove IllegalConnectorArgumentsException which is not used
1 parent b4bb190 commit d76e7eb

File tree

6 files changed

+25
-14
lines changed

6 files changed

+25
-14
lines changed

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/BreakpointManager.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.List;
1818
import java.util.Map;
1919
import java.util.concurrent.atomic.AtomicInteger;
20+
import java.util.logging.Level;
2021
import java.util.logging.Logger;
2122

2223
import com.microsoft.java.debug.core.Configuration;
@@ -74,7 +75,7 @@ public IBreakpoint[] setBreakpoints(String source, IBreakpoint[] breakpoints, bo
7475
// Destroy the breakpoint on the debugee VM.
7576
bp.close();
7677
} catch (Exception e) {
77-
logger.severe(String.format("Remove breakpoint exception: %s", e));
78+
logger.log(Level.SEVERE, String.format("Remove breakpoint exception: %s", e.toString()), e);
7879
}
7980
this.breakpoints.remove(bp);
8081
}
@@ -144,7 +145,7 @@ private void removeBreakpointsInternally(String source, IBreakpoint[] breakpoint
144145
this.breakpoints.remove(breakpoint);
145146
breakpointMap.remove(String.valueOf(breakpoint.lineNumber()));
146147
} catch (Exception e) {
147-
logger.severe(String.format("Remove breakpoint exception: %s", e));
148+
logger.log(Level.SEVERE, String.format("Remove breakpoint exception: %s", e.toString()), e);
148149
}
149150
}
150151
}

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/DebugAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.List;
1717
import java.util.Map;
1818
import java.util.function.BiConsumer;
19+
import java.util.logging.Level;
1920
import java.util.logging.Logger;
2021

2122
import com.microsoft.java.debug.core.Configuration;
@@ -76,7 +77,7 @@ public Messages.Response dispatchRequest(Messages.Request request) {
7677
String.format("Unrecognized request: { _request: %s }", request.command));
7778
}
7879
} catch (Exception e) {
79-
logger.severe(String.format("DebugSession dispatch exception:%s", e.toString()));
80+
logger.log(Level.SEVERE, String.format("DebugSession dispatch exception: %s", e.toString()), e);
8081
AdapterUtils.setErrorResponse(response, ErrorCode.UNKNOWN_FAILURE,
8182
e.getMessage() != null ? e.getMessage() : e.toString());
8283
}

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/ProtocolServer.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.nio.charset.StandardCharsets;
2626
import java.util.concurrent.ConcurrentLinkedQueue;
2727
import java.util.concurrent.atomic.AtomicInteger;
28+
import java.util.logging.Level;
2829
import java.util.logging.Logger;
2930
import java.util.regex.Matcher;
3031
import java.util.regex.Pattern;
@@ -95,7 +96,7 @@ public void start() {
9596
this.processData();
9697
}
9798
} catch (IOException e) {
98-
logger.severe(String.format("Read data from io exception: %s", e));
99+
logger.log(Level.SEVERE, String.format("Read data from io exception: %s", e.toString()), e);
99100
}
100101
}
101102

@@ -155,7 +156,7 @@ private void sendMessage(Messages.ProtocolMessage message) {
155156
this.writer.write(utf8Data);
156157
this.writer.flush();
157158
} catch (IOException e) {
158-
logger.severe(String.format("Write data to io exception: %s", e));
159+
logger.log(Level.SEVERE, String.format("Write data to io exception: %s", e.toString()), e);
159160
}
160161
}
161162

@@ -204,7 +205,7 @@ private void dispatchRequest(String request) {
204205
}
205206
sendMessage(response);
206207
} catch (Exception e) {
207-
logger.severe(String.format("Dispatch debug protocol error: %s", e));
208+
logger.log(Level.SEVERE, String.format("Dispatch debug protocol error: %s", e.toString()), e);
208209
}
209210
}
210211
} finally {

com.microsoft.java.debug.core/src/main/java/com/microsoft/java/debug/core/adapter/variables/VariableUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import java.util.ArrayList;
1515
import java.util.List;
16+
import java.util.logging.Level;
1617
import java.util.logging.Logger;
1718
import java.util.stream.Collectors;
1819

@@ -88,7 +89,7 @@ public static List<Variable> listFieldVariables(ObjectReference obj, boolean inc
8889
}
8990
return a.name().compareToIgnoreCase(b.name());
9091
} catch (Exception e) {
91-
logger.severe(String.format("Cannot sort fields: %s", e));
92+
logger.log(Level.SEVERE, String.format("Cannot sort fields: %s", e), e);
9293
return -1;
9394
}
9495
}).collect(Collectors.toList());

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugServer.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.concurrent.SynchronousQueue;
1919
import java.util.concurrent.ThreadPoolExecutor;
2020
import java.util.concurrent.TimeUnit;
21+
import java.util.logging.Level;
2122
import java.util.logging.Logger;
2223

2324
import com.microsoft.java.debug.core.Configuration;
@@ -35,7 +36,7 @@ private JavaDebugServer() {
3536
try {
3637
this.serverSocket = new ServerSocket(0, 1);
3738
} catch (IOException e) {
38-
logger.severe(String.format("Failed to create Java Debug Server: %s", e));
39+
logger.log(Level.SEVERE, String.format("Failed to create Java Debug Server: %s", e.toString()), e);
3940
}
4041
}
4142

@@ -53,6 +54,7 @@ public static synchronized IDebugServer getInstance() {
5354
/**
5455
* Gets the server port.
5556
*/
57+
@Override
5658
public synchronized int getPort() {
5759
if (this.serverSocket != null) {
5860
return this.serverSocket.getLocalPort();
@@ -63,6 +65,7 @@ public synchronized int getPort() {
6365
/**
6466
* Starts the server if it's not started yet.
6567
*/
68+
@Override
6669
public synchronized void start() {
6770
if (this.serverSocket != null && !this.isStarted) {
6871
this.isStarted = true;
@@ -79,8 +82,8 @@ public void run() {
7982
// Then the server goes back to listen for new connection request.
8083
Socket connection = serverSocket.accept();
8184
executor.submit(createConnectionTask(connection));
82-
} catch (IOException e1) {
83-
logger.severe(String.format("Setup socket connection exception: %s", e1));
85+
} catch (IOException e) {
86+
logger.log(Level.SEVERE, String.format("Setup socket connection exception: %s", e.toString()), e);
8487
closeServerSocket();
8588
// If exception occurs when waiting for new client connection, shut down the connection pool
8689
// to make sure no new tasks are accepted. But the previously submitted tasks will continue to run.
@@ -94,6 +97,7 @@ public void run() {
9497
}
9598
}
9699

100+
@Override
97101
public synchronized void stop() {
98102
closeServerSocket();
99103
shutdownConnectionPool(true);
@@ -105,7 +109,7 @@ private synchronized void closeServerSocket() {
105109
logger.info("Close debugserver socket port " + serverSocket.getLocalPort());
106110
serverSocket.close();
107111
} catch (IOException e) {
108-
logger.severe(String.format("Close ServerSocket exception: %s", e));
112+
logger.log(Level.SEVERE, String.format("Close ServerSocket exception: %s", e.toString()), e);
109113
}
110114
}
111115
serverSocket = null;
@@ -123,14 +127,15 @@ private synchronized void shutdownConnectionPool(boolean now) {
123127

124128
private Runnable createConnectionTask(Socket connection) {
125129
return new Runnable() {
130+
@Override
126131
public void run() {
127132
try {
128133
ProtocolServer protocolServer = new ProtocolServer(connection.getInputStream(), connection.getOutputStream(),
129134
JdtProviderContextFactory.createProviderContext());
130135
// protocol server will dispatch request and send response in a while-loop.
131136
protocolServer.start();
132137
} catch (IOException e) {
133-
logger.severe(String.format("Socket connection exception: %s", e));
138+
logger.log(Level.SEVERE, String.format("Socket connection exception: %s", e.toString()), e);
134139
} finally {
135140
logger.info("Debug connection closed");
136141
}

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JdtSourceLookUpProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.ArrayList;
2424
import java.util.HashMap;
2525
import java.util.Map;
26+
import java.util.logging.Level;
2627
import java.util.logging.Logger;
2728

2829
import org.eclipse.core.resources.IProject;
@@ -78,6 +79,7 @@ public void initialize(Map<String, Object> props) {
7879
context.putAll(props);
7980
}
8081

82+
@Override
8183
public boolean supportsRealtimeBreakpointVerification() {
8284
return true;
8385
}
@@ -187,7 +189,7 @@ private String getContents(IClassFile cf) {
187189
source = disassemble(cf);
188190
}
189191
} catch (JavaModelException e) {
190-
logger.severe(String.format("Failed to parse the source contents of the class file: %s", e));
192+
logger.log(Level.SEVERE, String.format("Failed to parse the source contents of the class file: %s", e.toString()), e);
191193
}
192194
if (source == null) {
193195
source = "";
@@ -248,7 +250,7 @@ public void acceptSearchMatch(SearchMatch match) {
248250
}, searchScope, requestor, null /* progress monitor */);
249251
return uris.size() == 0 ? null : uris.get(0);
250252
} catch (CoreException e) {
251-
logger.severe(String.format("Failed to parse java project: %s", e));
253+
logger.log(Level.SEVERE, String.format("Failed to parse java project: %s", e.toString()), e);
252254
}
253255
return null;
254256
}

0 commit comments

Comments
 (0)