- Add the "isolate" command which allows the user to switch isolate by name or number. Supports completion.
- Add the "isolate name" command which allows the user to rename an isolate. Add the "setName" method to the service protocol to support this. Isolates now have a debugger_name() in the vm.
- The new IsolateUpdate event notifies the client when an isolate name changes.
- When an isolate is updated, update the page's isolate too, so the navbar is accurate.
- Update isolate summary to display isolate number.
- Rework how the isolate's name is computed because we were getting garbagey names in the IsolateStart event (SpawnState was not yet set).
- Make sure that the debugger doesn't subscribe to events multiple times.
- "info isolates" is now "isolate list".
- Rework reporting of vm and isolate startTime in the service protocol and in Observatory.
- Fix bug in command completion when subcommands and other completions share common prefixes.
- Rework isolate accounting in the VM object in Observatory. We now create Isolates in getFromMap rather than from IsolateStart events, per se. Rewrite the isolate updating code.
- IsolateStart and IsolateExit events are now owned by the Isolate itself, rather than the vm.
- Return the actual result in pause/resume/etc.
- Add assertion in JSONStream::PrintProperty64 that the result fits in a javascript double. Sigh.
- Stop sending GC events for the service isolate. Add assertions to guard against this happening in the future.
- Misc improvements in error reporting.
Review URL: https://codereview.chromium.org//1007863003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44718 260f80e4-7a28-3924-810f-c04153c831b5
Implement in-frame evaluation in the vm service.
Add a notion of 'current frame' and use it across the debugger,
particularly in source-location based commands (break, clear).
Change the expansion logic for frames, so that by default only the
current frame is shown. When a user expands a frame it is now pinned.
Change command line parsing so that internal whitespace is preserved. We need this to properly evaluate expressions with internal whitespace.
Fix a deadlock in the debugger message loop.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//993613002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44353 260f80e4-7a28-3924-810f-c04153c831b5
--------
VM
Add a new ServiceEvent class in the vm. Rework the event type names.
Add BreakpointAdded, BreakpointResolved, and BreakpointRemoved
service events.
Record the top frame for kIsolateInterrupted and kExceptionThrown
debugger events.
Send a top frame in more Pause* events.
Send breakpoint list with the Isolate response. Remove the
getBreakpoints method from the vm service.
Move Resume events into debugger.cc.
Rework MessageHandler a bit so that we can send PauseStart and
PauseExit notifications.
--------
Observatory
Move some event handler from Application to Isolate.
Rewrite breakpoint tracking code to use the new breakpoint events.
Change run state tracking in Isolate.
Change getFromMap so that it applies updates if the map isn't a ref.
Use getFromMap instead of new ServiceObject in invokeRpc. This
fixes some duplicate ServiceObject problems.
Review URL: https://codereview.chromium.org//979823003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44268 260f80e4-7a28-3924-810f-c04153c831b5
TableTree improvements:
- Row's have flex-box divs in each table cell.
- To represent depth in tree a colored vertical bar for each depth level is shown
- Expanding tree nodes is now asynchronous and animates.
- Change cursor during tree expansion.
Observatory Profiler improvements:
- Improved appearance.
- Support for inclusive (main first) call trees.
- Replace tooltip hover with info toggle.
- Visual icon attributes for code, functions and call tree nodes.
- Fetching / Load status display.
- Cleaned up Code and Function kinds.
Profiler improvements:
- When not profiling the VM (--profile-vm) only walk the stack when we are in Dart code or have exited Dart code. This removes some native stack walker noise.
- Build inclusive (main first) call trees and send across service.
Notes for analyzer team:
Analyzer command line:
./out/ReleaseIA32/dart --keep-code --trace-profiler --profile-depth=128 --observe out/ReleaseIA32/dart-sdk/bin/snapshots/dartanalyzer.dart.snapshot --dart-sdk=out/ReleaseIA32/dart-sdk pkg/compiler/lib/src/dart2js.dart
Profiler settings:
- Tags: None or VM
- Mode: Function
- Direction: Bottom up
R=asiva@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org//965593002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44152 260f80e4-7a28-3924-810f-c04153c831b5
Profiler improvements:
- Track Functions in profile and build Function based trie
- Associate code objects with functions
- Created cpu_profile.dart library
- Major speed improvements for disassembly view
- Fix truncation of disassembly comments
- Ability to get code object ticks from disassembly view
- Inlining mini-map in disassembly view.
- Remove a bunch of unused data from profile service response
- In some cases a caller PC that is better than the PC marker is inserted into the stack trace
- Inlined functions are expanded
- Ability to clear profile
- New flag '--keep_code' which keeps deoptimized code around for use by the profiler.
General fixes:
- Fix caching in service library
- Remove pubspec.yaml before running pub get
R=asiva@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org//928833003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44067 260f80e4-7a28-3924-810f-c04153c831b5
- Use IsolateCreated and IsolateShutdown events to edit the VM's isolate cache directly.
- IsolateCreated and IsolateShutdown events are owned by the VM.
- When eagerly loading a new isolate, consume any errors rather than letting them bubble up to the application level.
- When reloading the VM perform an edit the isolate cache instead of replacing it.
- When reloading the VM do not reload all isolates.
- Fix flaky coverage_test fail by delaying setting the breakpoint.
- Add isolate lifecycle unit test.
- Make the isolate cache observable and send an observable notification that the 'isolates' property has changed when editing the isolate cache.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//961483002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44056 260f80e4-7a28-3924-810f-c04153c831b5
break adds a breakpoint, clear removes it.
Formats:
break - break at current position
break 13 - break at line 13, current script
break 13:20 - break at line 13, col 20, current script
break script.dart:13 - break at line 13, script.dart
break script.dart:13:20 - break at line 13, col 20, script.dart
break main - break at function
break FormatException - break at constructor
break _SHA1._updateHash - break at method
clear supports the same location specifiers.
TAB completion works for all of these formats.
The protocol does not yet support setting column-specific or
function/constructor/method breakpoints. For now we just support
parsing these formats.
Review URL: https://codereview.chromium.org//918003002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43733 260f80e4-7a28-3924-810f-c04153c831b5
Service
- Remove support for old-style service requests.
- Drop 'arguments' from JsonStream and ServiceRequestHandler.
- Json-rpc inspired renaming: command->method, options->params all over.
- Implement getFlagList, setFlag, getObjectByAddress.
- Add helpers PrintMissingParamError and PrintInvalidParamError
to make our error messages more regular.
- Update tests.
- Service_SetSource removed for now. John will resurrect.
Observatory
- Drop all Deprecated 'get' functions. We now use json rpc for everything.
- Drop 'link' and 'relativeLink' from ServiceObject -- they were
ui-specific and they are no longer meaningful anyways. Use 'id' instead.
- New pages: VMPage, FlagsPage, InspectPage, ErrorPage. All urls
used by Observatory are now 'new school' and have a proper
prefix. ErrorPage is the new catch-all.
- Pages now use a Uri instead of a url String. This lets them
grab query parameters more easily.
- SimplePage replaces IsolateSuffixPage.
- We now use gotoLink() or makeLink() to make our navigation
links. gotoLink gets some optional parameters to make it
easier to construct links to ServiceObjects.
- Rework mouse clicks on the heap map to use getObjectByAddress.
- Remove the breakpoint_list. It wasn't working. I'll add it back later.
- Silence logging of getIsolateMetric/getVMMetric.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//897193002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43514 260f80e4-7a28-3924-810f-c04153c831b5