Difference between revisions of "EDT:Debug"

From Eclipsepedia

Jump to: navigation, search
 
(21 intermediate revisions by one user not shown)
Line 1: Line 1:
 
The Java-based debugger is implemented via [http://jcp.org/en/jsr/detail?id=45 JSR-45], plus some of our own extensions (such as support for a customized Variables view).  
 
The Java-based debugger is implemented via [http://jcp.org/en/jsr/detail?id=45 JSR-45], plus some of our own extensions (such as support for a customized Variables view).  
  
The JavaScript-based debugger has not been started yet.  
+
The JavaScript-based debugger is a port from the RBD EGL Rich UI debugger.  
  
 
<br>  
 
<br>  
 
Bugzilla:
 
  
 
[https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=blocker;bug_severity=critical;bug_severity=major;bug_severity=normal;bug_severity=minor;bug_severity=trivial;classification=Tools;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=EDT%20Debug;product=EDT Open bugs]  
 
[https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=blocker;bug_severity=critical;bug_severity=major;bug_severity=normal;bug_severity=minor;bug_severity=trivial;classification=Tools;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=EDT%20Debug;product=EDT Open bugs]  
  
 
[https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement;classification=Tools;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=EDT%20Debug;product=EDT Open enhancement requests]  
 
[https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement;classification=Tools;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=EDT%20Debug;product=EDT Open enhancement requests]  
 +
 +
[[EDT:Debug Extensibility|Extending the debugger]]<br>
 +
 +
[[EDT:Debug Regression Testing|Regression testing the debugger]]
  
 
<br>  
 
<br>  
  
{| cellspacing="1" cellpadding="1" border="1" width="900" style=""
+
In the following table:
 +
 
 +
*<span style="background-color:#cccccc">gray</span> = done for both debuggers
 +
*<span style="background-color:#FFFF00">yellow</span> = done for one debugger but not the other<br>
 +
*<span style="background-color:#FF0000">red</span> = not yet supported in either debugger
 +
 
 +
{| cellspacing="1" cellpadding="1" border="1" width="900"
 
|-
 
|-
 
| bgcolor="#999999" align="center" width="350" | '''Function'''  
 
| bgcolor="#999999" align="center" width="350" | '''Function'''  
| bgcolor="#999999" align="center" width="100" colspan="4" | '''Java'''<br>  
+
| bgcolor="#999999" align="center" width="100" colspan="5" | '''Java'''<br>  
 
| bgcolor="#999999" align="center" width="100" colspan="4" | '''JavaScript'''
 
| bgcolor="#999999" align="center" width="100" colspan="4" | '''JavaScript'''
 
|-
 
|-
Line 22: Line 30:
 
| bgcolor="#cccccc" align="center" valign="middle" | '''Sizing'''<br>  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''Sizing'''<br>  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''0.7<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''0.7<br>'''  
 +
| bgcolor="#cccccc" align="center" valign="middle" | '''0.8'''
 
| bgcolor="#cccccc" align="center" valign="middle" | '''1.0<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''1.0<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''Future<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''Future<br>'''  
| bgcolor="#cccccc" align="center" valign="middle" | '''Sizing'''<sup>'''[4]'''</sup><br>  
+
| bgcolor="#cccccc" align="center" valign="middle" | '''Sizing'''<br>  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''0.7<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''0.7<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''1.0<br>'''  
 
| bgcolor="#cccccc" align="center" valign="middle" | '''1.0<br>'''  
Line 35: Line 44:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 +
| 15d<br>
 +
| done ({{bug|351854}})
 
| <br>  
 
| <br>  
 +
| <br>
 +
|-
 +
| bgcolor="#cccccc" |
 +
*Debug on a server such as Apache Tomcat
 +
 +
| 3d
 +
| done ({{bug|353046}})
 
| <br>  
 
| <br>  
| {{bug|351854}}
+
| <br>
 +
| <br>
 +
| bgcolor="#cccccc" align="center" colspan="4" | N/A
 
|-
 
|-
| bgcolor="#cccccc" colspan="9" | ''Stepping through statements''<br>
+
| bgcolor="#cccccc" colspan="10" | ''Stepping through statements''<br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 50: Line 70:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 +
| done ({{bug|351854}})
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 58: Line 79:
 
| <br>  
 
| <br>  
 
| done (free)<br>  
 
| done (free)<br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
Line 63: Line 85:
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
*Decide how to filter runtimes that users won't want to step into<br>
+
*Filter runtimes that users won't want to step into (basic)<br>
  
| 5d<br>  
+
| 1d<br>  
| {{bug|346265}}<br>  
+
| done ({{bug|346265}})<br>
 +
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| bgcolor="#cccccc" align="center" colspan="4" | N/A
 
| bgcolor="#cccccc" align="center" colspan="4" | N/A
 
|-
 
|-
| bgcolor="#cccccc" colspan="9" | ''Breakpoints''
+
| bgcolor="#cccccc" |
 +
*Filter runtimes that users won't want to step into (extensible)<br>
 +
 
 +
| 4d<br>
 +
| <br>
 +
| done ({{bug|353050}})
 +
| <br>
 +
| <br>
 +
| bgcolor="#cccccc" align="center" colspan="4" | N/A <br>
 +
|-
 +
| bgcolor="#cccccc" colspan="10" | ''Breakpoints''
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 81: Line 114:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| {{bug|352582}}<br>
+
| done ({{bug|352582}})
 +
| <br>
 +
| <br>
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Conditional breakpoints<br>
 
*Conditional breakpoints<br>
  
 
| 5d<sup>[1]</sup><br>  
 
| 5d<sup>[1]</sup><br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| {{bug|351236}}  
 
| {{bug|351236}}  
 +
| 5d<sup>[1]</sup><br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|351237}}
 
| {{bug|351237}}
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Hit count on breakpoints
 
*Hit count on breakpoints
  
 +
| 1d<br>
 
| <br>  
 
| <br>  
| done (free)<br>
 
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 +
| {{bug|352585}}
 +
| 1d<br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|352586}}
 
| {{bug|352586}}
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Watchpoints<br>
 
*Watchpoints<br>
  
 
| 15d<br>  
 
| 15d<br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| {{bug|351873}}  
 
| {{bug|351873}}  
 +
| 15d<br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|351874}}
 
| {{bug|351874}}
 
|-
 
|-
| bgcolor="#cccccc" colspan="9" | ''Variables view''<br>
+
| bgcolor="#cccccc" colspan="10" | ''Variables view''<br>
 +
|-
 +
| bgcolor="#cccccc" |
 +
*Variable adapter framework
 +
 
 +
| 2d
 +
| done ({{bug|352771}})
 +
| <br>
 +
| <br>
 +
| <br>
 +
| bgcolor="#cccccc" align="center" colspan="4" | N/A
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 131: Line 178:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| done ({{bug|351854}})
 +
| <br>
 +
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 143: Line 191:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| done ({{bug|351854}})
 +
| <br>
 +
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 155: Line 204:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|  
+
| bgcolor="#cccccc" align="center" colspan="4" | &nbsp;N/A - not supported in JSGen&nbsp;
| <br>
+
| Will be covered by {{bug|351854}}
+
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
 
*Arrays<br>
 
*Arrays<br>
  
| 2d<sup>[2]</sup><br>  
+
| 1/2d<sup>[2]</sup><br>  
| {{bug|352021}}<br>  
+
| done ({{bug|352021}})<br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| done ({{bug|351854}})
 +
| <br>
 +
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 179: Line 227:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| done ({{bug|351854}})
 +
| <br>
 +
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
 
*Dictionaries
 
*Dictionaries
  
| 1d<br>  
+
| 1/2d<sup>[2]</sup><br>
 +
| done ({{bug|352600}})
 +
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
| {{bug|352600}}
 
 
| <br>  
 
| <br>  
|  
+
| done ({{bug|351854}})
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| <br>
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
 
*ArrayDictionaries
 
*ArrayDictionaries
  
| 1d<sup>[3]</sup><br>
+
| bgcolor="#cccccc" align="center" colspan="9" | N/A - not supported in EDT JavaGen or JSGen
| <br>
+
| <br>
+
| {{bug|352602}}
+
| <br>
+
|
+
| <br>
+
| Will be covered by {{bug|351854}}
+
 
|-
 
|-
 
| bgcolor="#cccccc" |  
 
| bgcolor="#cccccc" |  
Line 211: Line 254:
  
 
| 3d<br>  
 
| 3d<br>  
| {{bug|346247}}  
+
| done ({{bug|346247}})
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
| Will be covered by {{bug|351854}}
+
| done ({{bug|351854}})
 +
| <br>
 +
| <br>
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Simple value modification of primitives<br>
 
*Simple value modification of primitives<br>
  
 
| 3d<br>  
 
| 3d<br>  
| {{bug|346249}}<br>
 
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|  
+
| {{bug|346249}}
 +
| 1d<br>
 +
| <br>
 
| <br>  
 
| <br>  
 
| {{bug|352598}}<br>
 
| {{bug|352598}}<br>
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Complex value modification of variables<br>
 
*Complex value modification of variables<br>
  
 
| 5d<sup>[1]</sup><br>  
 
| 5d<sup>[1]</sup><br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| {{bug|352595}}  
 
| {{bug|352595}}  
 +
| 4d<br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|352597}}<br>
 
| {{bug|352597}}<br>
 
|-
 
|-
| bgcolor="#cccccc" |  
+
| bgcolor="#FF0000" |  
 
*Build watch expressions from variable context menu<br>
 
*Build watch expressions from variable context menu<br>
  
 
| 3d<br>  
 
| 3d<br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| {{bug|351858}}  
 
| {{bug|351858}}  
 +
| 3d<br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|351859}}
 
| {{bug|351859}}
 
|-
 
|-
| bgcolor="#cccccc" | Hot code replace (aka hotswapping)<br>  
+
| bgcolor="#FFFF00" | Hot code replace (aka hotswapping)<br>  
 
| <br>  
 
| <br>  
 
| done (free)<br>  
 
| done (free)<br>  
Line 261: Line 308:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|  
+
| 20d<br>
 +
| <br>
 
| <br>  
 
| <br>  
 
| {{bug|351238}}
 
| {{bug|351238}}
 
|-
 
|-
| bgcolor="#cccccc" | Compile &amp; generate contextual expressions  
+
| bgcolor="#FF0000" | Compile &amp; generate contextual expressions  
 
| 10d  
 
| 10d  
|  
+
| <br>
|  
+
| <br>
 +
| <br>
 
| {{bug|352666}}  
 
| {{bug|352666}}  
|  
+
| 10d
|  
+
| <br>
|  
+
| <br>
 
| {{bug|352666}}
 
| {{bug|352666}}
 
|-
 
|-
| bgcolor="#cccccc" | Watch expressions<br>  
+
| bgcolor="#FF0000" | Watch expressions<br>  
 
| 5d<sup>[1]</sup><br>  
 
| 5d<sup>[1]</sup><br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
 
| {{bug|351240}}  
 
| {{bug|351240}}  
 +
| 4d<sup>[1]</sup><br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|351241}}
 
| {{bug|351241}}
Line 291: Line 341:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|  
+
| 1d<br>
 +
| done ({{bug|352593}})<br>
 
| <br>  
 
| <br>  
| {{bug|352593}}<br>
+
| <br>
 
|-
 
|-
| bgcolor="#cccccc" | Drop to frame<br>  
+
| bgcolor="#FFFF00" | Drop to frame<br>  
 
| <br>  
 
| <br>  
 
| done (free)<br>  
 
| done (free)<br>  
Line 301: Line 352:
 
| <br>  
 
| <br>  
 
| <br>  
 
| <br>  
|  
+
| 3d<br>
 +
| <br>
 
| <br>  
 
| <br>  
 
| {{bug|351239}}
 
| {{bug|351239}}
 
|-
 
|-
| bgcolor="#cccccc" | Hover value in source editor<br>  
+
| bgcolor="#FF0000" | Hover value in source editor<br>  
 
| 4d<br>  
 
| 4d<br>  
 +
| <br>
 
| <br>  
 
| <br>  
 
| {{bug|351872}}  
 
| {{bug|351872}}  
 
| <br>  
 
| <br>  
 +
| 4d<br>
 
| <br>  
 
| <br>  
|
 
 
| <br>  
 
| <br>  
 
| {{bug|351872}}
 
| {{bug|351872}}
Line 320: Line 373:
 
[1] Depends on {{bug|352666}} which is sized at 10 days<br>  
 
[1] Depends on {{bug|352666}} which is sized at 10 days<br>  
  
[2] Might make sense to create an object formatting framework where plug-ins can contribute variable value adapters. The EDT Java Generator might use one type to display, for example, an array, so it needs to use the object in a certain way to obtain its kids (e.g. edtObject.getChildren()). But a completely different generator will have a different class for arrays which will need a separate adapter for getting the kids (fooArray._children()). The first adapter that supports the given object wins - if no adapters then we fall back on JDT's display of the variable. '''Note:''' If a type generates a class then no adapter is needed - you can just generate the SMAP file with the class.
+
[2] Depends on {{bug|352771}} which is sized at 2 days<br>
 
+
[3] Not currently supported in EDT JavaGen so it can't be worked on. Requires the generator provide a variable adapter as described in #2 above, in which case the work for this becomes writing an adapter for the runtime ArrayDictionary object - which again, can't be worked on until the base generator supports the type. If someone else extends our generator to support ArrayDictionary, they'll have to write their own adapter.
+
  
[4] Sizings for JavaScript debug assume a direct port of the RBD RUI Debugger
+
[[Category:EDT]]

Latest revision as of 09:18, 1 May 2012

The Java-based debugger is implemented via JSR-45, plus some of our own extensions (such as support for a customized Variables view).

The JavaScript-based debugger is a port from the RBD EGL Rich UI debugger.


Open bugs

Open enhancement requests

Extending the debugger

Regression testing the debugger


In the following table:

  • gray = done for both debuggers
  • yellow = done for one debugger but not the other
  • red = not yet supported in either debugger
Function Java
JavaScript

Sizing
0.7
0.8 1.0
Future
Sizing
0.7
1.0
Future
Core framework

done



15d
done (bug 351854)

  • Debug on a server such as Apache Tomcat
3d done (bug 353046)


N/A
Stepping through statements
  • Most basic of function

done (free)




done (bug 351854)

  • Step between EGL and Java

done (free)



N/A
  • Filter runtimes that users won't want to step into (basic)
1d
done (bug 346265)



N/A
  • Filter runtimes that users won't want to step into (extensible)
4d

done (bug 353050)

N/A
Breakpoints
  • Line breakpoints

done




done (bug 352582)

  • Conditional breakpoints
5d[1]



bug 351236 5d[1]


bug 351237
  • Hit count on breakpoints
1d



bug 352585 1d


bug 352586
  • Watchpoints
15d



bug 351873 15d


bug 351874
Variables view
  • Variable adapter framework
2d done (bug 352771)


N/A
  • Primitives and records

done




done (bug 351854)

  • User and system libraries

done (bug 346252)




done (bug 351854)

  • Data tables, forms, & program parameters

done (bug 346254)



 N/A - not supported in JSGen 
  • Arrays
1/2d[2]
done (bug 352021)




done (bug 351854)

  • Handler fields

done



done (bug 351854)

  • Dictionaries
1/2d[2]
done (bug 352600)



done (bug 351854)

  • ArrayDictionaries
N/A - not supported in EDT JavaGen or JSGen
  • Format display of certain variables
3d
done (bug 346247)



done (bug 351854)

  • Simple value modification of primitives
3d



bug 346249 1d


bug 352598
  • Complex value modification of variables
5d[1]



bug 352595 4d


bug 352597
  • Build watch expressions from variable context menu
3d



bug 351858 3d


bug 351859
Hot code replace (aka hotswapping)

done (free)



20d


bug 351238
Compile & generate contextual expressions 10d


bug 352666 10d

bug 352666
Watch expressions
5d[1]



bug 351240 4d[1]


bug 351241
Run to line

done (bug 346256)



1d
done (bug 352593)


Drop to frame

done (free)



3d


bug 351239
Hover value in source editor
4d


bug 351872
4d


bug 351872


[1] Depends on bug 352666 which is sized at 10 days

[2] Depends on bug 352771 which is sized at 2 days