Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: runtime/bin/dbg_message.cc

Issue 13533016: Add line table command to debugger (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/dbg_message.h ('k') | runtime/include/dart_debugger_api.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "bin/dbg_connection.h" 5 #include "bin/dbg_connection.h"
6 #include "bin/dbg_message.h" 6 #include "bin/dbg_message.h"
7 #include "bin/dartutils.h" 7 #include "bin/dartutils.h"
8 #include "bin/thread.h" 8 #include "bin/thread.h"
9 #include "bin/utils.h" 9 #include "bin/utils.h"
10 10
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 { "stepOver", DbgMessage::HandleStepOverCmd }, 472 { "stepOver", DbgMessage::HandleStepOverCmd },
473 { "getLibraries", DbgMessage::HandleGetLibrariesCmd }, 473 { "getLibraries", DbgMessage::HandleGetLibrariesCmd },
474 { "getClassProperties", DbgMessage::HandleGetClassPropsCmd }, 474 { "getClassProperties", DbgMessage::HandleGetClassPropsCmd },
475 { "getLibraryProperties", DbgMessage::HandleGetLibPropsCmd }, 475 { "getLibraryProperties", DbgMessage::HandleGetLibPropsCmd },
476 { "setLibraryProperties", DbgMessage::HandleSetLibPropsCmd }, 476 { "setLibraryProperties", DbgMessage::HandleSetLibPropsCmd },
477 { "getObjectProperties", DbgMessage::HandleGetObjPropsCmd }, 477 { "getObjectProperties", DbgMessage::HandleGetObjPropsCmd },
478 { "getListElements", DbgMessage::HandleGetListCmd }, 478 { "getListElements", DbgMessage::HandleGetListCmd },
479 { "getGlobalVariables", DbgMessage::HandleGetGlobalsCmd }, 479 { "getGlobalVariables", DbgMessage::HandleGetGlobalsCmd },
480 { "getScriptURLs", DbgMessage::HandleGetScriptURLsCmd }, 480 { "getScriptURLs", DbgMessage::HandleGetScriptURLsCmd },
481 { "getScriptSource", DbgMessage::HandleGetSourceCmd }, 481 { "getScriptSource", DbgMessage::HandleGetSourceCmd },
482 { "getLineNumberTable", DbgMessage::HandleGetLineNumbersCmd },
482 { "getStackTrace", DbgMessage::HandleGetStackTraceCmd }, 483 { "getStackTrace", DbgMessage::HandleGetStackTraceCmd },
483 { "setBreakpoint", DbgMessage::HandleSetBpCmd }, 484 { "setBreakpoint", DbgMessage::HandleSetBpCmd },
484 { "setPauseOnException", DbgMessage::HandlePauseOnExcCmd }, 485 { "setPauseOnException", DbgMessage::HandlePauseOnExcCmd },
485 { "removeBreakpoint", DbgMessage::HandleRemBpCmd }, 486 { "removeBreakpoint", DbgMessage::HandleRemBpCmd },
486 { NULL, NULL } 487 { NULL, NULL }
487 }; 488 };
488 489
489 490
490 bool DbgMessage::HandleMessage() { 491 bool DbgMessage::HandleMessage() {
491 // Dispatch to the appropriate handler for the command. 492 // Dispatch to the appropriate handler for the command.
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 } 782 }
782 msg.Printf("{ \"id\": %d, ", msg_id); 783 msg.Printf("{ \"id\": %d, ", msg_id);
783 msg.Printf("\"result\": { \"text\": "); 784 msg.Printf("\"result\": { \"text\": ");
784 FormatEncodedString(&msg, source); 785 FormatEncodedString(&msg, source);
785 msg.Printf("}}"); 786 msg.Printf("}}");
786 in_msg->SendReply(&msg); 787 in_msg->SendReply(&msg);
787 return false; 788 return false;
788 } 789 }
789 790
790 791
792 bool DbgMessage::HandleGetLineNumbersCmd(DbgMessage* in_msg) {
793 ASSERT(in_msg != NULL);
794 MessageParser msg_parser(in_msg->buffer(), in_msg->buffer_len());
795 int msg_id = msg_parser.MessageId();
796 dart::TextBuffer msg(64);
797 intptr_t lib_id = msg_parser.GetIntParam("libraryId");
798 char* url_chars = msg_parser.GetStringParam("url");
799 ASSERT(url_chars != NULL);
800 Dart_Handle url = DartUtils::NewString(url_chars);
801 ASSERT_NOT_ERROR(url);
802 free(url_chars);
803 url_chars = NULL;
804 Dart_Handle info = Dart_ScriptGetTokenInfo(lib_id, url);
805 if (Dart_IsError(info)) {
806 in_msg->SendErrorReply(msg_id, Dart_GetError(info));
807 return false;
808 }
809 ASSERT(Dart_IsList(info));
810 intptr_t info_len = 0;
811 Dart_Handle res = Dart_ListLength(info, &info_len);
812 ASSERT_NOT_ERROR(res);
813 msg.Printf("{ \"id\": %d, ", msg_id);
814 msg.Printf("\"result\": { \"lines\": [");
815 Dart_Handle elem;
816 bool num_elems = 0;
817 for (intptr_t i = 0; i < info_len; i++) {
818 elem = Dart_ListGetAt(info, i);
819 if (Dart_IsNull(elem)) {
820 msg.Printf((i == 0) ? "[" : "], [");
821 num_elems = 0;
822 } else {
823 ASSERT(Dart_IsInteger(elem));
824 int value = GetIntValue(elem);
825 if (num_elems == 0) {
826 msg.Printf("%d", value);
827 } else {
828 msg.Printf(",%d", value);
829 }
830 num_elems++;
831 }
832 }
833 msg.Printf("]]}}");
834 in_msg->SendReply(&msg);
835 return false;
836 }
837
838
791 bool DbgMessage::HandleGetStackTraceCmd(DbgMessage* in_msg) { 839 bool DbgMessage::HandleGetStackTraceCmd(DbgMessage* in_msg) {
792 ASSERT(in_msg != NULL); 840 ASSERT(in_msg != NULL);
793 MessageParser msg_parser(in_msg->buffer(), in_msg->buffer_len()); 841 MessageParser msg_parser(in_msg->buffer(), in_msg->buffer_len());
794 int msg_id = msg_parser.MessageId(); 842 int msg_id = msg_parser.MessageId();
795 Dart_StackTrace trace; 843 Dart_StackTrace trace;
796 Dart_Handle res = Dart_GetStackTrace(&trace); 844 Dart_Handle res = Dart_GetStackTrace(&trace);
797 ASSERT_NOT_ERROR(res); 845 ASSERT_NOT_ERROR(res);
798 dart::TextBuffer msg(128); 846 dart::TextBuffer msg(128);
799 msg.Printf("{ \"id\": %d, \"result\": {", msg_id); 847 msg.Printf("{ \"id\": %d, \"result\": {", msg_id);
800 FormatCallFrames(&msg, trace); 848 FormatCallFrames(&msg, trace);
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 msg_queue->SendIsolateEvent(isolate_id, kind); 1227 msg_queue->SendIsolateEvent(isolate_id, kind);
1180 if (kind == kInterrupted) { 1228 if (kind == kInterrupted) {
1181 msg_queue->HandleMessages(); 1229 msg_queue->HandleMessages();
1182 } else { 1230 } else {
1183 ASSERT(kind == kShutdown); 1231 ASSERT(kind == kShutdown);
1184 RemoveIsolateMsgQueue(isolate_id); 1232 RemoveIsolateMsgQueue(isolate_id);
1185 } 1233 }
1186 } 1234 }
1187 Dart_ExitScope(); 1235 Dart_ExitScope();
1188 } 1236 }
OLDNEW
« no previous file with comments | « runtime/bin/dbg_message.h ('k') | runtime/include/dart_debugger_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698