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

Unified Diff: runtime/vm/debugger.cc

Issue 8872049: First debugger API unit test (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/debugger.cc
===================================================================
--- runtime/vm/debugger.cc (revision 2291)
+++ runtime/vm/debugger.cc (working copy)
@@ -22,6 +22,7 @@
DEFINE_FLAG(charp, bpt, NULL, "Debug breakpoint at <func>");
siva 2011/12/09 02:20:04 Is this flag used anymore?
hausner 2011/12/13 00:14:59 No. Good catch.
+static const bool verbose = false;
siva 2011/12/09 02:20:04 Can this be turned on at the command line?
hausner 2011/12/13 00:14:59 No it's just for my own "debugger debugging" at th
Breakpoint::Breakpoint(const Function& func, intptr_t pc_desc_index)
: function_(func.raw()),
@@ -89,6 +90,33 @@
}
+const char* Debugger::QualifiedFunctionName(const Function& func) {
+ String& func_name = String::Handle(func.name());
+ Class& func_class = Class::Handle(func.owner());
+ String& class_name = String::Handle(func_class.Name());
+
+ const char* kFormat = "%s%s%s";
+ intptr_t len = OS::SNPrint(NULL, 0, kFormat,
+ func_class.IsTopLevel() ? "" : class_name.ToCString(),
+ func_class.IsTopLevel() ? "" : ".",
+ func_name.ToCString());
siva 2011/12/09 02:20:04 ditto comment regarding library URL needed for ful
hausner 2011/12/13 00:14:59 Yes. Cf other comment.
+ len++; // String terminator.
+ char* chars = reinterpret_cast<char*>(
+ Isolate::Current()->current_zone()->Allocate(len));
+ OS::SNPrint(chars, len, kFormat,
+ func_class.IsTopLevel() ? "" : class_name.ToCString(),
+ func_class.IsTopLevel() ? "" : ".",
+ func_name.ToCString());
+ return chars;
+}
+
+
+RawString* ActivationFrame::QualifiedFunctionName() {
+ Function& func = Function::Handle(DartFunction());
+ return String::New(Debugger::QualifiedFunctionName(func));
+}
+
+
RawString* ActivationFrame::SourceUrl() {
const Script& script = Script::Handle(SourceScript());
return script.url();
@@ -144,30 +172,19 @@
const char* ActivationFrame::ToCString() {
- const char* kFormat = "Function: '%s%s%s' url: '%s' line: %d";
+ const char* kFormat = "Function: '%s' url: '%s' line: %d";
Function& func = Function::Handle(DartFunction());
- String& func_name = String::Handle(func.name());
- Class& func_class = Class::Handle(func.owner());
- String& class_name = String::Handle(func_class.Name());
String& url = String::Handle(SourceUrl());
intptr_t line = LineNumber();
+ const char* func_name = Debugger::QualifiedFunctionName(func);
- intptr_t len = OS::SNPrint(NULL, 0, kFormat,
- class_name.ToCString(),
- func_class.IsTopLevel() ? "" : ".",
- func_name.ToCString(),
- url.ToCString(),
- line);
+ intptr_t len =
+ OS::SNPrint(NULL, 0, kFormat, func_name, url.ToCString(), line);
len++; // String terminator.
char* chars = reinterpret_cast<char*>(
Isolate::Current()->current_zone()->Allocate(len));
- OS::SNPrint(chars, len, kFormat,
- class_name.ToCString(),
- func_class.IsTopLevel() ? "" : ".",
- func_name.ToCString(),
- url.ToCString(),
- line);
+ OS::SNPrint(chars, len, kFormat, func_name, url.ToCString(), line);
return chars;
}
@@ -251,10 +268,12 @@
}
}
if (bpt != NULL) {
- OS::Print("Setting breakpoint at '%s' line %d (PC %p)\n",
- String::Handle(bpt->SourceUrl()).ToCString(),
- bpt->LineNumber(),
- bpt->pc());
+ if (verbose) {
+ OS::Print("Setting breakpoint at '%s' line %d (PC %p)\n",
+ String::Handle(bpt->SourceUrl()).ToCString(),
+ bpt->LineNumber(),
+ bpt->pc());
+ }
AddBreakpoint(bpt);
return bpt;
}
@@ -296,10 +315,12 @@
ASSERT(frame != NULL);
Breakpoint* bpt = GetBreakpoint(frame->pc());
ASSERT(bpt != NULL);
- OS::Print(">>> Breakpoint at %s:%d (Address %p)\n",
- bpt ? String::Handle(bpt->SourceUrl()).ToCString() : "?",
- bpt ? bpt->LineNumber() : 0,
- frame->pc());
+ if (verbose) {
+ OS::Print(">>> Breakpoint at %s:%d (Address %p)\n",
+ bpt ? String::Handle(bpt->SourceUrl()).ToCString() : "?",
+ bpt ? bpt->LineNumber() : 0,
+ frame->pc());
+ }
StackTrace* stack_trace = new StackTrace(8);
while (frame != NULL) {
ASSERT(frame->IsValid());

Powered by Google App Engine
This is Rietveld 408576698