[ 
https://issues.apache.org/jira/browse/GROOVY-8289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Milles updated GROOVY-8289:
--------------------------------
    Description: 
When debugging in the IDE, there is a curious behavior where it looks like step 
requests are not being respected.  One thing I have found is that JDWP requests 
to the JVM process are failing to resolve the variable "this" in certain cases. 
 I need some help from someone who knows the bytecode better than myself to 
figure out where the problem lies.

Original issue: https://github.com/groovy/groovy-eclipse/issues/312

I have narrowed it down to a small bit of code with static compilation enabled.
{code}
@groovy.transform.CompileStatic
class C {
  String string
  C(String s = null) { string = s }

  static void main(args) {
    def c = new C('') // put breakpoint on this line, run as Java app, and step
    println c
  }
}
{code}
Debug stepping fails when executing the constructor for C.  If I use {{new 
C(string:'')}}, the generated default constructor is used instead and debugging 
works fine.  So I think it has something to do with the one-arg constructor's 
bytecode.

I dumped the class file using javap and have attached them.  {{C1.txt}} is for 
the code above.  {{C2.txt}} is the above with the named args constructor used 
instead.  I'm not sure if the local args table for the single-argument 
constructor is bad and that is why "this" cannot be resolved.

There are several similar bugs reported for other tools and whatnots when 
looking for "JDWP error code 35".  Hopefully, these help point to something in 
the bytecode that can be corrected.

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5005668
https://bugs.openjdk.java.net/browse/JDK-4992932

  was:
When debugging in the IDE, there is a curious behavior where it looks like step 
requests are not being respected.  One thing I have found is that JDWP requests 
to the JVM process are failing to resolve the variable "this" in certain cases. 
 I need some help from someone who knows the bytecode better than myself to 
figure out where the problem lies.

Original issue: https://github.com/groovy/groovy-eclipse/issues/312

I have narrowed it down to a small bit of code with static compilation enabled.
{code}
@groovy.transform.CompileStatic
class C {
  String string
  C(String s = null) { string = s }

  static void main(args) {
    def c = new C('') // put breakpoint on this line, run as Java app, and step
    println c
  }
}
{code}
Debug stepping fails when executing the constructor for C.  If I use {{new 
C(string:'')}}, the generated default constructor is used instead and debugging 
works fine.  Also, if I explicitly define the 2 constructors, debugging works 
fine.  So I think it has something to do with the generated constructor.

I dumped the class file using javap and have attached them.  {{C1.txt}} is for 
the code above.  {{C2.txt}} is the above with the named args constructor used 
instead.  I'm not sure if the local args table for the default constructor is 
bad and that is why "this" cannot be resolved.

There are several similar bugs reported for other tools and whatnots when 
looking for "JDWP error code 35".  Hopefully, these help point to something in 
the bytecode that can be corrected.

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5005668
https://bugs.openjdk.java.net/browse/JDK-4992932


> STC and default value in ctor is causing debugging error
> --------------------------------------------------------
>
>                 Key: GROOVY-8289
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8289
>             Project: Groovy
>          Issue Type: Bug
>          Components: bytecode
>    Affects Versions: 2.4.12
>            Reporter: Eric Milles
>         Attachments: C1.txt, C2.txt
>
>
> When debugging in the IDE, there is a curious behavior where it looks like 
> step requests are not being respected.  One thing I have found is that JDWP 
> requests to the JVM process are failing to resolve the variable "this" in 
> certain cases.  I need some help from someone who knows the bytecode better 
> than myself to figure out where the problem lies.
> Original issue: https://github.com/groovy/groovy-eclipse/issues/312
> I have narrowed it down to a small bit of code with static compilation 
> enabled.
> {code}
> @groovy.transform.CompileStatic
> class C {
>   String string
>   C(String s = null) { string = s }
>   static void main(args) {
>     def c = new C('') // put breakpoint on this line, run as Java app, and 
> step
>     println c
>   }
> }
> {code}
> Debug stepping fails when executing the constructor for C.  If I use {{new 
> C(string:'')}}, the generated default constructor is used instead and 
> debugging works fine.  So I think it has something to do with the one-arg 
> constructor's bytecode.
> I dumped the class file using javap and have attached them.  {{C1.txt}} is 
> for the code above.  {{C2.txt}} is the above with the named args constructor 
> used instead.  I'm not sure if the local args table for the single-argument 
> constructor is bad and that is why "this" cannot be resolved.
> There are several similar bugs reported for other tools and whatnots when 
> looking for "JDWP error code 35".  Hopefully, these help point to something 
> in the bytecode that can be corrected.
> http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5005668
> https://bugs.openjdk.java.net/browse/JDK-4992932



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to