Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Debug/Test Script
Platform Debug | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
JDT Debug | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Contents
- 1 Test Page Template
- 2 Test Passes
- 3 Test Suites
- 4 Java 6.0 Features
- 5 Java 7.0 Features
- 6 Evaluations
- 7 Context Launching
- 8 Mac OSX Launching
- 9 Launch Options
- 10 Launch Modes
- 11 Launch Configurations
- 12 Debug View Management
- 13 Breakpoints
- 14 Stepping Tests
- 15 Logical Structures
- 16 Detail Formatters
- 17 Watch Items
- 18 Context Menu Launching
- 19 Runtime Classpaths
- 20 Source Lookup
- 21 Threads & Monitors & Thread Groups
- 22 Hot Code Replace
- 23 Installed JREs
- 24 Execution Environments
- 25 String Variables
- 26 Console
- 27 Variables
- 28 Refactoring
- 29 Applets
- 30 Remote Debugging
- 31 JSP Example
- 32 Stress Tests
- 33 Breadcrumb
- 34 Memory View
- 35 Modules View
- 36 Registers View
- 37 Breakpoint Toggle Types
Test Page Template
Test Page Template: Debug/Test Plan Template.
This template must be used to create a new test page for each release that requires testing.
Any new features that are added to the test script must also be added to the feature list section of the template.
Test Passes
- Platform Debug 1.6 EE Update (August 2, 2013)
- 4.3 M7 (May 3, 2013)
- 4.3 M4 (December 11, 2012)
- 3.8 M6 (March 16, 2012)
- 3.8 M5 (January 24, 2012)
- 3.7.2 RC2 (January 19, 2012)
- 3.8M4 (December 6, 2011)
- 3.8M3 (October 26, 2011)
- 3.8M2 (September 13, 2011)
- 3.7.1 (August 25, 2011)
- 3.7 End Game
- 3.7 M7 (April 29, 2011)
- 3.7 M5 (January 28, 2011)
- 3.6.2 (January 20, 2011)
Test Suites
- all of the test suites must be run using both a Mac OSX VM type and a Standard VM type
- preferably use the latest 1.7 JDK from Orcale to ensure the Java 7 tests get coverage, otherwise the default JRE installed on Mac OSX is only 1.6. You can get the new 1.7 JDK from here.
Java 6.0 Features
- All Instances
- should not be available when not debugging with 1.6 VM
- Variables view popup
- Java Outline view popup (type and constructors only)
- Java editor popup (type name or constructor name selected)
- change number of instances to show on Heap walking preference page
- All References
- should not be available when not debugging with 1.6 VM
- Variables view popup
- in-line as variable in the variables view (change in view preferences and preference page)
- change number of references to show on Heap walking preference page
- Force Early Return
- should not be available when not debugging with 1.6 VM
- works as an evaluation (from display and details pane)
- Run menu and key binding
- Java editor context menu
Java 7.0 Features
- Diamond
- should work with Inspect / Display / Evaluations
- Switch on strings
- should work with Inspect / Display / Evaluations
- Multi-catch
- Simplified Varargs
- should work with Inspect / Display / Evaluations
- Underscores in literals
- should work in Inspect / Display / Evaluations
- should work in assign value from variables view
- should work in 'save' action in detail pane
- Binary literals
- should work in Inspect / Display / Evaluations
- should work in assign value from variables view
- should work in 'save' action in detail pane
Evaluations
- Java 7.0 features
- Try-with-Resource
- Switch-on-string
- Multi-catch
- Diamond
- Java 5.0 features
- Generic types
- enhanced for loop syntax
- varargs
- autoboxing
- enumerations
- From various contexts
- Java Compilation Unit editor
- Java Classfile editor
- Display View
- Details area
- Snippet editor
- in class files without attached source
- for arrays as the receiving 'this' context
- Inspect vs. Display
- note that in the Display view and Snippet editor, "Display" prints the result in-line
- everywhere else, popups are used to display/inspect the result
- General
- switch statements should be supported in evaluations
- use key bindings and context menus
- use code assist (key binding and context menu)
- persisting the result - i.e. move the result to the Display view or Expressions view
- in a clean workspace, popups should size reasonable on the first use, after which the popup sizes are persisted and reused
- ensure you can inspect / display within anonymous types bug 334662
Context Launching
- Resource properties page
- available on launchable resources
- only show listing of launch configurations that apply to selected resource
- create/delete/edit configuration
- changes to configurations are cancelable
- Launching
- launch button(s) tooltip(s) should track selection changes (update as selections change) non-launchable resource should prompt to run the parent (if set to do so, toggle pref on Launching preference page)
- Running and debugging applications has been simplified to run or debug the selected file or active editor. Use the "Run/Debug > Launching > Launch the selected resource or active editor" preference to enable this behavior. When the selected resource (or active editor) is not executable, you can opt to launch the associated project by selecting "Always launch project if selected resource cannot be launched".
Pressing the Run or Debug toolbar button will launch the selected resource (as will the Run or Debug action in the top level Run menu). When no launch configuration exists for the selected resource, you will be prompted to select how to run or debug an application if there is more than one way to launch the selection. For example, when running a JUnit test you can launch it as a Java application or JUnit test. This will create a launch configuration and entry in the launch history for the application.
When the same resource is launched again, the most recent configuration in the launch history associated with that resource is re-launched.
Mac OSX Launching
If using Mountain Lion you will likely have to get the 1.7 JDK from Oracle, as Apple stopped providing new versions.
You can get the latest JDK from here
- Create Mac OSX VM
- launch normal Java, PDE and JUnit launches from the launch dialog, by context launching and via the launch shortcuts
- Create standard VM
- launch normal Java, PDE and JUnit launches from the launch dialog, by context launching and via the launch shortcuts
- In all launching tests that use SWT ensure the option to include
-XstartOnFirstThread
is honoured- add the option to VM args
- check the option on the Arguments tab to include the argument
- add the VM argument and check the option - the VM argument should not be duplicated in the launch
- Search for VMs should find VMs in the new location for Lion and Mountain Lion
Launch Options
- Build before launch
- build is scoped to relevant projects
- standard job progress dialog is displayed for the following cases. The "Run in Background" button is never present
- launching in foreground (un-check "Launch in background" option on common tab)
- waiting for ongoing build to complete before launching
- building before launching
- the progress dialog never appears when launching in the background
- when waiting for an ongoing build to complete before launching a node appears in the debug view in italics showing "waiting for build"
- Prompt to launch in face of compilation errors
- always/prompt
- prompt should tell you which project(s) contain errors
- irrelevant errors should not cause prompt (i.e. Ant errors should not prevent Java launch)
- Prompt to launch in debug mode when breakpoints present
- always/never/prompt
- General
- save dirty editors
- launch in foreground/background (controlled via common tab on launch config)
Launch Modes
For this test, you require the use of the launch modes test plugin available here.
- Preferences Dialog
- ensure launch tool preferences page is available, even if there is no conflicting tooling. Page should be disabled with an explanation if no conflicting tooling
- ensure page can be searched for with tree viewer searching
- ensure there is a help topic for the page
- with duplicate tooling select a variety of items in both viewers
- ensure once an item is selected in the preferred tooling viewer it cannot be unselected (checked)
- changing selected tooling without saving changes should not modify saved choices
- selecting preferred tooling from a quick launch or the launch configuration dialog should be reflected in the pref page (and changeable)
- Launch Configuration Dialog
- ensure incompatible modes are flagged correctly (check the widget on the Coverage Tab) with an error message and link
- link should present complete list of support mode combinations
- selection of mode set should update dialog and remove error
- duplicate delegates should be flagged correctly with error message and link
- link should present complete set of contributed launch tooling
- selection of tooling should remove error from dialog, and be reflected in the preference page
- Launch History
- resolution dialog should be presented if duplicate tooling found and no choice has been made
- choice of tooling should allow launch to continue and be reflected in the preferences page
- canceling either choice from the resolution dialog should cancel the launch as well
Launch Configurations
- Launch History / Favorites
- available in the toolbar drop-down
- new launched configurations added to top of history
- launching from history changes order of history
- test the 'organize favorites' dialog
- configurations should not be in both history and favorites
- ctrl-clicking a configuration should open to launch configuration dialog
- ctrl-Shift-clicking a configuration should offer to remove it from the history/favorites
- Launch Configuration Dialog
- creating/Deleting configurations of different types
- deleting multiple launch configurations, ensure selection is preserved/updated
- filtering configurations from tree
- test error handling, apply/revert buttons, and launching
- check if tabs make configuration dirty even if no changes are made
- General
- importing and exporting of launch configurations through File > Import/Export
- using java search to find launch configurations that launch a class
Debug View Management
- Switch to Debug Perspective
- when launching (always/never/prompt)
- when suspending (always/never/prompt)
- Activate The Debug View When Program Suspends
- debug action set should also open automatically when a debug view is opened
- relevant debug views should automatically open when stack frame is selected
- in debug perspective by default
- in other perspectives as configured on the "View Management" pref page (also available in Debug View drop down menu)
- use PDA debugger to try debugging different languages in same perspective (hope to have this available - example from draft debug article)
- automatically opened views should close when debugging ends
- General
- activate the workbench when a breakpoint is hit
- switching to another non-debug perspective should not auto-close or auto-hide non debug views that have been opened by a debug context bug 325797
- ensure already present views are not auto-closed bug 128066
Breakpoints
- Breakpoint Groups
- show breakpoints, breakpoint types, breakpoint working sets, files, projects, resource working sets, advanced
- auto-add to default breakpoint working set
- drag & drop between breakpoint working sets (move)
- copy & paste between breakpoint working sets
- stratum breakpoints should group by stratum (e.g. JSP breakpoints)
- Creation Of Breakpoints
- create: line, class load, method, exception, and watchpoint
- no breakpoints can be set in interfaces
- breakpoints can be set in external source file (file from OS that does not belong to a project)
- toggle Line breakpoints - double click in ruler, Run menu action (menu & keybinding), context menu in outline view
- toggle Method breakpoints - double click in ruler, Run menu action (menu & keybinding), context menu in outline view
- class Load Breakpoint - double click in ruler, Run menu action (menu & keybinding), context menu in outline view
- toggle Watchpoints - double click in ruler, Run menu action (menu & keybinding), context menu in outline view
- watchpoint cannot appear on 'final' field
- watchpoint cannot appear on 'static final' field
- exception Breakpoints - Run menu action, hyperlink from stack trace, breakpoints view
- Creation Of Breakpoints on Member Types
- all breakpoint types should be created on inner & outer & local classes
- all breakpoint types should be created on initializers for inner & outer & local types
- no duplicate breakpoints should occur
- all breakpoint types should be created on member types of an Annotation
- Refactoring
- breakpoints should be updated if enclosing type is refactored
- method breakpoints should be updated after refactoring method
- line breakpoints should be updated if enclosing method refactored
- watchpoint should be updated if field refactored
- Skip All Breakpoints Option
- not all shortcuts have support
- groups and breakpoints should be rendered with "skip" (crossed out) line
- Import/Export
- export wizard is properly initialized based on breakpoint selection in Breakpoints view
- wizard settings are persisted for subsequent import/export operations
- breakpoint working set information is exported and are re-created on import
- existing breakpoints are updated with imported information (for example, hit count, etc.)
- breakpoint working sets are recreated properly
- Undo for Breakpoints
- undo 'remove all' via Breakpoints view
- undo 'remove all' via global view (e.g. Package Explorer)
- undo selected breakpoints via Breakpoints view
- undo selected breakpoints via global view (e.g. Package Explorer)
- undo 'toggle breakpoint' in editor via Breakpoints view
- undo 'toggle breakpoint' in editor via global view (e.g. Package Explorer)
- Warn if a conditional breakpoint gets deleted from editor via 'toggle breakpoint'
- warning dialog should be presented
- option to 'not show again' should be honored
- General
- option to open inspector on exception when an exception breakpoint is hit
- Java > Debug: "open popup when suspended on exception"
- option to delete breakpoints vs. working set when "delete" pressed on a working set
- breakpoint option choices are properly persisted
- preference for suspending Thread by default on newly created breakpoints
Stepping Tests
Ensure that the selection of a stack frame remains "sticky" while stepping in a multi-threaded application. See bug 229536.
- Run to Line
- context menu
- run menu action and keybinding
- classfile and Compilation unit editor
- preference to "skip breakpoints during run to line" (on main Run/Debug pref page)
- Step Into Selection
- run menu action and keybinding
- hyperlink action using Ctrl+Alt+Click
- Step Filters
- step filters on/off should affect stepping (no stepping within filtered types)
- toggle step filters action
- edit step filters via context menu, preference page
- persistence of step filters, view open/closure, workbench restart
- Drop To Frame
- drops to selected frame
- cannot drop to frame of a native method
Logical Structures
- View Options
- view variables with logical structures on/off
- stepping with logical structures on/off
- selectively turn off logical structures via context menu "Show As > ..."
- Compatible Structures
- java.util.Collection (flat list)
- java.util.Map (list of map entries)
- java.util.Map (key/value)
- User Defined Logical Structures
- more than one structure for a type: all choices appear in "Show As > .." menu and the user can choose between structures properly
- structures persist restore properly across workbench invocations
- structures with compilation errors
- structures with runtime errors
- when two different types (A,B) share the same possible logical structures, their enabled (selected) structure is shared (i.e. if you select "show A as X" then B will also show as X.
- Import/Export Logical Structures
- Import is available
- Logical structure import succeeds
Detail Formatters
- View Options
- view variables with custom formatter(s) set / default
- stepping with custom formatter(s) set / default
- User options
- add / remove / edit from the preference page
- add from variables view
- preference properly persist restore
- Import / Export formatters
Watch Items
- Creating Watch items
- from context menu "Add Watch Expression"
- from variables view context menu "Watch"
- dragging variables from variables view to expressions view
- dragging text to expressions view
- General
- persist
- reordering of expressions view by dragging and dropping
- unable/disable
- update while stepping
- update when selecting a different stack frame
- errors appear as children of a watch expression (compilation errors, runtime errors)
- Cell editing
- Cell editing available when columns are enabled
- F2 activates cell editor
- Entering a blank expression removes it
Context Menu Launching
- Run/Debug Menu
- from the context and top level Run/Debug cascade menus. Note that before a shortcut's property tester is loaded, it will appear in the context menu by default. For example, the Java application shortcut requires the "hasMain" tester from the Java debug plug-in, and thus, until the plug-in is loaded, the shortcut will appear on all Java files whether they have a main method or not
- Java Applications (with main, without main, compilation unit, type, method, classfile, package, project)
- Java Applets
- JUnit tests
- Ant build, Ant build... (build file, targets in outline and Ant view)
- Context Menu Availability
- resource navigator
- package explorer
- outline view
- editor
- Use keybindings To Launch (ALT-Shift-D/X)
- an active editor
- a selection in an outline/navigator
- Ctrl-Click On A Launch Shortcut
- not all shortcuts have support
- should select the most recently used configuration for the launchable class
- if no recently used configurations exist, the type should be selected
Runtime Classpaths
- Default Classpath
- the default classpath should track a project's build path
- option to only include exported items in runtime classpath (by default, all items are included)
- Non-Default Bootpath
- prepending and appending to the default bootpath
- using an explicit bootpath (i.e. without prepend/append)
- Non-Default Classpath
- different types of entries
- new entry type - String Variables
Source Lookup
- Default Source Lookup Path
- the default source lookup path should track changes in the default build path (when using a default runtime classpath). If a non-default runtime classpath is used, the default source lookup path should track the runtime classpath
- searching for duplicate source files
- modifying the source lookup path when a source file cannot be found
- multiple source roots in archives
- Entry Types
- Internal archives
- External archives
- Java projects
- Java classpath variables
- Directory (external)
- Folder (in the workspace)
- Java Library (JRE, required plug-ins, etc).
Threads & Monitors & Thread Groups
- Monitor Information In The Debug View
- no information/errors for VMs that do not support monitor information
- monitor information appears for suspended threads
- monitor information is not displayed for running threads
- ensure valid deadlocks are detected
- threads are rendered red (preference color), and have deadlock overlay
- locks support resume/terminate
- Thread Groups
- thread groups can be displayed in debug view by turning on the "Show Thread Groups" option in the view menu
- thread groups support terminate
Hot Code Replace
- Valid HCR
- method changes (existing)
- changes to statements inside method work on SUN and IBM vms
- HCR fails adding/removing/changing signature of method on SUN vm
- HCR allows methods to be added for IBM J9 vm
- changes in existing instance variable initializer
- affected frames are automatically popped (unless top frame or native method on the stack)
- change method in declared inner type
- change method in anonymous inner type
- default and non-default packages
- Manually Drop To Frame
- works in all methods except last method on stack
- a native method cannot be dropped (and thus a method above a native cannot be dropped/re-entered)
Installed JREs
- Javadoc Locations
- JREs allow a javadoc location to be set per library in the JRE
- changing the javadoc location on a JRE updates the build path javadoc location
- changing the javadoc location on a build path (JRE library) updates the JRE
- changing a javadoc location or source attachment does not causes an explicit bootpath to be used when launching with that JRE
- General
- copy a JRE definition
- import/export of JRE preferences
- changing the default JRE triggers a build if the default JRE is referenced by a project
- Mac OSX
- Search for JREs
- should work with or without internet access
- should find developer JREs
- Search for JREs
Execution Environments
- Specify a Build Path
- changing the default JRE for an EE updates build path
- Specify a Runtime
- changing the default JRE for an EE updates the default and/or selected EE runtime JRE
- Modifying Access Rules
- adding an access rule should cause a rebuild (if auto-build is enabled)
- ensure that the access rules defined in a system library are not editable/removable
- add a new forbidden rule, ensure accesses to forbidden types is flagged as an error
- add a new discouraged rule, ensure access to discouraged types is flagged as a warning
- ensure access rules can be removed
- Over-riding Access Rules
- create a rule that over-rides a system library rule, and ensure it works
String Variables
- General
- use String Variables in launch configs
- VM args, program args, main type name
- String Variable selection dialog
Console
- Options
- pin a console - pin action is specific to console view. When pinned, console should not change in that view
- scroll lock - specific to console view. When locked, the console in that view should not scroll
- link to console preferences from context menu
- Switching between consoles
- use the drop down to toggle between consoles
- clicking on the drop-down should toggle between the last two consoles shown
- open new console - CVS and Java Stack Trace Console
- create a keybinding for Next / Previous page for the Console view
- try the new key binding from every kind of console available; should be available for all console kinds
- Stack trace console
- pasting and navigating stack traces
- hyperlinks are colored by hyperlink color preferences
- editing stack traces/clearing console
- contents are persisted across workbench invocations and close/re-open
- formatting
- hyperlinks for stack traces, link to source code
- hyperlinks for exception names allow creation/modification of exception breakpoint settings
- Encoding
- use alternate console encoding to display DBCS character set
- remember to use "-Dfile.encoding=UTF-8" (or whatever encoding) on the VM args
- Open Multiple Console Views
- pin a view selectively
- scroll lock a view selectively
- key-bindings work in views - FORMAT in Java stack trace console/CTRL-D/Z in process console
- Multiplex Output
- available from the common tab in a supporting launch configuration
- a file
- the console
- both
- none
- General
- show when output to standard out/err
- console title becomes bold when content changes (but not if on top/auto activated)
- console input - typing, pasting, pasting multiple lines
- CTRL-Z/D for EOF when doing console input
Variables
- toString()
- in-line in the tree viewer
- for all variables
- for variables with detail formatters
- only in the details area
- Changing Variable Values
- via "Change Value..." context action
- dialogs are different for primitives & objects
- evaluations are supported
- editing a String value via evaluation and direct editing
- via CTRL-S in the details area
- evaluations for objects
- direct editing for primitives
- Column support
- turn columns off/on
- column size automatically until user changes them
- sizes are persisted
- select & persist columns to display
- background "changed" color highlighting
- General
- find Variable support and key-binding
- changed variables appear red (preference color) when stepping
- variables remain expanded/selected as stepping
- when switching between stack frames (without resuming), the variables expanded/selected are maintained (i.e. expand and select for frame 1, then select frame 2 and **expand/select. when re-selecting frame 1, the original state is restored)
- debug hover works for symbols with the same name and different values (inherited fields), showing correct value
Refactoring
- Launch Configurations
- launch configuration main type is updated after type rename, type move, package rename
- launch configuration project is updated after project rename, package move, type move
- Java breakpoints
- are updated after type rename, type move, package rename, package move, project rename
- VM suspend at the new location
- breakpoint attributes are preserved
- label is updated
- marker location is updated (text selected when double-clicking on a breakpoint in the breakpoint view)
Applets
- Main Tab
- specify a project via typing/browsing
- specify a nonexistent project (should see error if does not exist)
- specify an applet class via typing/searching (no validation is performed on type name in the tab - error occurs on launch if an invalid type is specified)
- specify a class that is not an applet (no validation is performed - error occurs on launch if invalid)
- specify default applet viewer class
- specify an explicit applet viewer class
- Parameters
- specify various width & height
- specify parameters (available via Applet#getParameter(...))
- specify applet name - allows Applets to communicate with each other via AppletContext#getApplet(...)
Remote Debugging
- Connect To A Remote VM
- try "suspend=y" and "suspend =n" options
- try different sockets
- try connecting to a socket that has no VM
- try "localhost" and "127.0.0.1"
- Remote VM Connect To Waiting Debug Session
- try different sockets
- try terminating waiting debug process
- try stopping waiting job
- General
- terminate should only be enabled when the config specifies that terminate is supported
JSP Example
Try JSP debugging example, as documented in the org.eclipse.jdt.ui.examples.javafamily plug-in ReleaseNotes.html. The instructions are in the section titled "Debugging a JSP".
- Setup
- Install Apache Tomcat
- Install the example plugin which can be found in the JDT UI repo.
- Testing (use the release notes for help)
- Tomcat launch configuration
- breakpoints in JSP files
- enable/Disable installed JSP breakpoints
- enable/Disable un-installed breakpoints when a target/server is running
- changing the stratum displayed via context menu in debug view
- stepping in a Java file from a JSP file and stepping back (source lookup should work)
- evaluation in the context of a JSP file (requires adding jsp-api.jar, jasper-runtime.jar and servlet-api.jar from /common/lib to the project's build path)
Stress Tests
- Stepping With Many Threads
- expansion and selection are maintained properly in the Debug View
- other suspended threads should not interfere with the current stepping thread
- selection should remain on the stack frame that is being stepped
- Stepping With Many Variables
- debug a test case with many variables. Expand many variables and set selection at the bottom of the Variables View. Do a few Step Over. Test with logical structures turned on / off
- the Variables View should properly maintain expansion and selection
- the Variables View should not scroll to the top unexpectedly
- Maintaining Variable(s) Expansion & Selection
- debug a test case with many variables. Expand many variables and set selection. Switch between different stack frames
- verify that expansion and selection are maintained properly in the Variables View
- the Variables View should not scroll to the top unexpectedly
- Stepping Quickly
- hold down the step over key (F6). Test with logical structures turned on / off. Test with thread filters turned on / off
- verify that expansion and selection are maintained properly in the Debug View
- verify that expansion and selection are maintained properly in the Variables View
- verify that source lookup is performed properly
- verify that debug actions are properly enabled/disabled
- Toggle Logical Structures Quickly
- debug a test case with many variables. Some of these variables can be displayed differently when logical structures is turned on. (e.g. Hash map) Expand many of these **variables and then toggle the logical structures action quickly
- verify that expansion and selection are maintained properly in the Variables View
- verify that there is no blank labels in the Variables View
Breadcrumb
- Activation
- automatic switch when resizing view
- tree viewer and breadcrumb selection should be the same
- Updating
- launching
- stepping, resuming, suspending, etc.
- terminating, Remove All
- remove All
- no Active Context should be shown when Debug view is empty or if there is no selection
- Drop down
- mouse-clicking on item. Item should retain focus until mousing over drop down. Clicking again on item should close drop down. Clicking on another item should close drop-down and immediately open a new drop-down for the other item.
- mouse-clicking on drop-down button. Drop down should open and receive focus immediately. Clicking again on button should close it.
- make a selection in the drop-down. Selected item should become the new active context, and drop-down should close.
- expanded state of elements shoudl be preserved between opening and closing the drop-downs, and should be the same as in the tree viewer.
- Keyboard navigation
- last item should receive focus when view is activated.
- left and Right keys should set selection to sibling items
- left key on the first item should open drop down
- right key on the last item should open drop down
- down key on any item should open drop down and give it focus.
- up key on the first item in drop down, should close it.
- Active Context
- selecting different items should change the active debug context (variables view should update, etc.)
- menu activation action on any item should open the context menu.
- menu actions should reflect the selected item. E.g. copy stack trace for a thread should copy the trace of the whole thread
- find action should activate the selected item in Debug view
Memory View
To test the Memory View, you will need the example.debug.memoryview sample. You can get the sample from the "Advanced Tutorial" from EclipseCon 2007.
- Add memory block
- adding multiple memory blocks by using a comma delimited list
- adding a memory block with empty expression
- adding a memory block using the key binding (Ctrl+Alt+M)
- Remove memory block
- remove single memory block
- remove multiple memory blocks
- remove all
- Add Memory Rendering
- default renderings get added automatically when a memory block is added
- add rendering from the Add Memory Rendering tab
- from the context menu
- using the key binding (Ctrl+N)
- add multiple renderings
- Remove Memory Rendering
- by closing the tab.
- from the context menu.
- using the key binding (Ctrl+W)
- Renderings
- make sure all the these renderings can be created: Hex, Signed Integer, Unsigned Integer, ASCII, Hex Integer
- bring different renderings to the top. Make sure that the tab label shows the address of the memory block when it is brought to the top
- switch between renderings using the key binding (Ctrl+PgUp / Ctrl+PgDn)
- content of the renderings get updated after each step
- renderings should mark memory that has changed
- memory shows up as grey if the rendering does not have cache to compute changes. e.g hidden when the user is stepping
- scroll to end of buffer and make sure memory is reloaded. Try with scrollbar and cursor
- top index and cursor in rendering are maintained after rendering update
- Synchronization
- toggle synchronization on and off
- scroll Bar
- table Cursor
- Format...
- Addresses
- reset to Base Address
- go to Address: Context Menu and CTRL+G. Try different modes.
- try switching between memory blocks: Tree viewer and Switch Memory Monitor action
- Auto vs Manual Loading
- try auto loading
- try manual loading
- try different buffer sizes
- try page up and page down actions during manual loading. Try shortcut keys: CTRL+sHIFT+> and CTRL+SHIFT+<
- make sure buffer size and loading preferences are preserved after workbench restart
- Memory View Layout
- show and Hide Memory Monitors Pane
- show and Hide Renderings Pane
- try with having multiple memory views
- preferences are persisted across workbench restart
- vertical vs Horizontal Orientation
Modules View
- General
- Modules View can be populated with flexible hierarchy
- Find...
- details pane can be populated
Registers View
- General
- the Registers View can be populated with Register Group and Registers
- register values get updated when their values change
- modify register values
- find a register
- copy registers
- turn column on and off
- show and hide columns
- details pane shows details of registers
- top index and expansion of registers are maintained after each step or switching stack frame
Breakpoint Toggle Types
- General
- use the PDA example debugger to test this feature. The PDA debugger supports different watchpoint types which can be toggled in the editor and the variables view
- breakpoint toggle actions can have multiple targets (i.e. handlers) registered for them. If a debugger is installed, which registers multiple breakpoint targets, the **Breakpoint Types sub-menu appears in the Run menu
- select different breakpoint types
- toggle breakpoints in different locations (editor and view)
- check that user-selected breakpoint type is persisted