Make breakpoints work in suspend functions

This commit is contained in:
Nikolay Krasko
2017-01-24 13:28:42 +03:00
parent 649ec9a73d
commit c525a59df8
10 changed files with 226 additions and 20 deletions
@@ -0,0 +1,8 @@
LineBreakpoint created at stopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteral.kt:26
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! stopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteral.StopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteralKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
stopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteral.kt:26
stopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteral.kt:27
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,8 @@
LineBreakpoint created at stopInSuspendFunctionWithSuspendPoints.kt:16
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! stopInSuspendFunctionWithSuspendPoints.StopInSuspendFunctionWithSuspendPointsKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
stopInSuspendFunctionWithSuspendPoints.kt:16
stopInSuspendFunctionWithSuspendPoints.kt:17
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,8 @@
LineBreakpoint created at stopInSuspendFunctionWithSuspendPointsInAnonymousObject.kt:20
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! stopInSuspendFunctionWithSuspendPointsInAnonymousObject.StopInSuspendFunctionWithSuspendPointsInAnonymousObjectKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
stopInSuspendFunctionWithSuspendPointsInAnonymousObject.kt:20
stopInSuspendFunctionWithSuspendPointsInAnonymousObject.kt:21
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,8 @@
LineBreakpoint created at stopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosure.kt:28
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! stopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosure.StopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosureKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
stopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosure.kt:28
stopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosure.kt:29
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,40 @@
package stopInInlinedLambdaInSuspendFunctionWithSuspendPointsInObjectLiteral
import forTests.builder
fun foo(a: Any) {}
suspend fun second() { }
interface Bar {
suspend fun first()
}
inline fun call(f: () -> Unit) {
f()
}
val bar = object : Bar {
val t = 121
override suspend fun first() {
foo("first")
call {
{
//Breakpoint!
foo(t)
}()
}
second()
foo("second")
}
}
fun main(args: Array<String>) {
builder {
bar.first()
}
}
@@ -0,0 +1,23 @@
package stopInSuspendFunctionWithSuspendPoints
import forTests.builder
fun foo(a: Any) {}
suspend fun second() {
}
suspend fun first() {
foo("first")
second()
//Breakpoint!
foo("second")
}
fun main(args: Array<String>) {
builder {
first()
}
}
@@ -0,0 +1,28 @@
package stopInSuspendFunctionWithSuspendPointsInAnonymousObject
import forTests.builder
fun foo(a: Any) {}
suspend fun second() { }
interface Bar {
suspend fun first()
}
val bar = object : Bar {
override suspend fun first() {
foo("first")
second()
//Breakpoint!
foo("second")
}
}
fun main(args: Array<String>) {
builder {
bar.first()
}
}
@@ -0,0 +1,37 @@
package stopInSuspendFunctionWithSuspendPointsInObjectLiteralInInlineCallWithClosure
import forTests.builder
fun foo(a: Any) {}
suspend fun second() {
foo("call")
}
interface F {
suspend fun test() {}
}
inline fun call(f: () -> Unit) {
f()
}
fun main(args: Array<String>) {
val inClosure = "first"
call {
{
val some = object : F {
override suspend fun test() {
foo(inClosure)
second()
//Breakpoint!
foo("other")
}
}
builder {
some.test()
}
}()
}
}