Skip to content

Commit 83bfb67

Browse files
committed
Catch InvalidStackFrameException in JDIStackFrame
1 parent 8f0015e commit 83bfb67

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

adapter/src/main/kotlin/org/javacs/ktda/jdi/stack/JDIStackFrame.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package org.javacs.ktda.jdi.stack
22

3+
import org.javacs.kt.LOG
34
import org.javacs.ktda.core.Position
45
import org.javacs.ktda.core.completion.CompletionItem
56
import org.javacs.ktda.core.completion.CompletionItemType
67
import org.javacs.ktda.core.scope.VariableTreeNode
78
import org.javacs.ktda.core.stack.StackFrame
89
import org.javacs.ktda.jdi.JDISessionContext
910
import org.javacs.ktda.jdi.scope.JDILocalScope
11+
import com.sun.jdi.InvalidStackFrameException
1012

1113
class JDIStackFrame(
1214
frame: com.sun.jdi.StackFrame,
@@ -15,9 +17,14 @@ class JDIStackFrame(
1517
private val location = frame.location()
1618
override val name: String = location.method()?.name() ?: "Unknown"
1719
override val position: Position? = context.positionOf(location)
18-
override val scopes: List<VariableTreeNode> by lazy { listOf(
19-
JDILocalScope(frame)
20-
) }
20+
override val scopes: List<VariableTreeNode> by lazy {
21+
try {
22+
listOf(JDILocalScope(frame))
23+
} catch (e: InvalidStackFrameException) {
24+
LOG.warn("Could not fetch scopes, invalid stack frame: {}", e.message)
25+
emptyList<VariableTreeNode>()
26+
}
27+
}
2128

2229
private val variables by lazy { scopes.flatMap { it.childs ?: emptyList() } }
2330

0 commit comments

Comments
 (0)