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

Side by Side Diff: runtime/vm/debugger_api_impl_test.cc

Issue 10657048: Debugger support to display global variables (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 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
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 "include/dart_debugger_api.h" 5 #include "include/dart_debugger_api.h"
6 #include "platform/assert.h" 6 #include "platform/assert.h"
7 #include "vm/dart_api_impl.h" 7 #include "vm/dart_api_impl.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 9
10 namespace dart { 10 namespace dart {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 62
63 static char const* BreakpointInfo(Dart_StackTrace trace) { 63 static char const* BreakpointInfo(Dart_StackTrace trace) {
64 static char info_str[128]; 64 static char info_str[128];
65 Dart_ActivationFrame frame; 65 Dart_ActivationFrame frame;
66 Dart_Handle res = Dart_GetActivationFrame(trace, 0, &frame); 66 Dart_Handle res = Dart_GetActivationFrame(trace, 0, &frame);
67 EXPECT_NOT_ERROR(res); 67 EXPECT_NOT_ERROR(res);
68 Dart_Handle func_name; 68 Dart_Handle func_name;
69 Dart_Handle url; 69 Dart_Handle url;
70 intptr_t line_number = 0; 70 intptr_t line_number = 0;
71 res = Dart_ActivationFrameInfo(frame, &func_name, &url, &line_number); 71 intptr_t library_id = 0;
72 res = Dart_ActivationFrameInfo(
73 frame, &func_name, &url, &line_number, &library_id);
72 EXPECT_NOT_ERROR(res); 74 EXPECT_NOT_ERROR(res);
73 OS::SNPrint(info_str, sizeof(info_str), "function %s (%s:%d)", 75 OS::SNPrint(info_str, sizeof(info_str), "function %s (%s:%d)",
74 ToCString(func_name), ToCString(url), line_number); 76 ToCString(func_name), ToCString(url), line_number);
75 return info_str; 77 return info_str;
76 } 78 }
77 79
78 80
79 static void PrintValue(Dart_Handle value, bool expand); 81 static void PrintValue(Dart_Handle value, bool expand);
80 82
81 83
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 OS::Print("%s", ToCString(str_value)); 131 OS::Print("%s", ToCString(str_value));
130 } else { 132 } else {
131 PrintObject(value, expand); 133 PrintObject(value, expand);
132 } 134 }
133 } 135 }
134 136
135 137
136 static void PrintActivationFrame(Dart_ActivationFrame frame) { 138 static void PrintActivationFrame(Dart_ActivationFrame frame) {
137 Dart_Handle func_name; 139 Dart_Handle func_name;
138 Dart_Handle res; 140 Dart_Handle res;
139 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 141 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
140 EXPECT_NOT_ERROR(res); 142 EXPECT_NOT_ERROR(res);
141 EXPECT(Dart_IsString(func_name)); 143 EXPECT(Dart_IsString(func_name));
142 const char* func_name_chars; 144 const char* func_name_chars;
143 Dart_StringToCString(func_name, &func_name_chars); 145 Dart_StringToCString(func_name, &func_name_chars);
144 OS::Print(" function %s\n", func_name_chars); 146 OS::Print(" function %s\n", func_name_chars);
145 Dart_Handle locals = Dart_GetLocalVariables(frame); 147 Dart_Handle locals = Dart_GetLocalVariables(frame);
146 EXPECT_NOT_ERROR(locals); 148 EXPECT_NOT_ERROR(locals);
147 intptr_t list_length = 0; 149 intptr_t list_length = 0;
148 Dart_Handle ret = Dart_ListLength(locals, &list_length); 150 Dart_Handle ret = Dart_ListLength(locals, &list_length);
149 EXPECT_NOT_ERROR(ret); 151 EXPECT_NOT_ERROR(ret);
(...skipping 27 matching lines...) Expand all
177 const char* func_names[], 179 const char* func_names[],
178 int names_len) { 180 int names_len) {
179 intptr_t trace_len; 181 intptr_t trace_len;
180 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 182 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
181 Dart_Handle func_name; 183 Dart_Handle func_name;
182 EXPECT_NOT_ERROR(res); 184 EXPECT_NOT_ERROR(res);
183 for (int i = 0; i < trace_len; i++) { 185 for (int i = 0; i < trace_len; i++) {
184 Dart_ActivationFrame frame; 186 Dart_ActivationFrame frame;
185 res = Dart_GetActivationFrame(trace, i, &frame); 187 res = Dart_GetActivationFrame(trace, i, &frame);
186 EXPECT_NOT_ERROR(res); 188 EXPECT_NOT_ERROR(res);
187 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 189 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
188 EXPECT_NOT_ERROR(res); 190 EXPECT_NOT_ERROR(res);
189 EXPECT(Dart_IsString(func_name)); 191 EXPECT(Dart_IsString(func_name));
190 const char* func_name_chars; 192 const char* func_name_chars;
191 Dart_StringToCString(func_name, &func_name_chars); 193 Dart_StringToCString(func_name, &func_name_chars);
192 if (i < names_len) { 194 if (i < names_len) {
193 EXPECT_STREQ(func_name_chars, func_names[i]); 195 EXPECT_STREQ(func_name_chars, func_names[i]);
194 if (strcmp(func_name_chars, func_names[i]) != 0) { 196 if (strcmp(func_name_chars, func_names[i]) != 0) {
195 OS::Print("Stack frame %d: expected function %s, but found %s\n", 197 OS::Print("Stack frame %d: expected function %s, but found %s\n",
196 i, func_names[i], func_name_chars); 198 i, func_names[i], func_name_chars);
197 } 199 }
198 } 200 }
199 } 201 }
200 } 202 }
201 203
202 204
203 void TestBreakpointHandler(Dart_Breakpoint bpt, Dart_StackTrace trace) { 205 void TestBreakpointHandler(Dart_Breakpoint bpt, Dart_StackTrace trace) {
204 const char* expected_trace[] = {"A.foo", "main"}; 206 const char* expected_trace[] = {"A.foo", "main"};
205 const intptr_t expected_trace_length = 2; 207 const intptr_t expected_trace_length = 2;
206 breakpoint_hit = true; 208 breakpoint_hit = true;
207 breakpoint_hit_counter++; 209 breakpoint_hit_counter++;
208 intptr_t trace_len; 210 intptr_t trace_len;
209 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 211 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
210 EXPECT_NOT_ERROR(res); 212 EXPECT_NOT_ERROR(res);
211 EXPECT_EQ(expected_trace_length, trace_len); 213 EXPECT_EQ(expected_trace_length, trace_len);
212 for (int i = 0; i < trace_len; i++) { 214 for (int i = 0; i < trace_len; i++) {
213 Dart_ActivationFrame frame; 215 Dart_ActivationFrame frame;
214 res = Dart_GetActivationFrame(trace, i, &frame); 216 res = Dart_GetActivationFrame(trace, i, &frame);
215 EXPECT_NOT_ERROR(res); 217 EXPECT_NOT_ERROR(res);
216 Dart_Handle func_name; 218 Dart_Handle func_name;
217 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 219 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
218 EXPECT_NOT_ERROR(res); 220 EXPECT_NOT_ERROR(res);
219 EXPECT(Dart_IsString(func_name)); 221 EXPECT(Dart_IsString(func_name));
220 const char* name_chars; 222 const char* name_chars;
221 Dart_StringToCString(func_name, &name_chars); 223 Dart_StringToCString(func_name, &name_chars);
222 EXPECT_STREQ(expected_trace[i], name_chars); 224 EXPECT_STREQ(expected_trace[i], name_chars);
223 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 225 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
224 } 226 }
225 } 227 }
226 228
227 229
(...skipping 24 matching lines...) Expand all
252 const char* expected_bpts[] = {"f1", "foo", "main"}; 254 const char* expected_bpts[] = {"f1", "foo", "main"};
253 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); 255 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts);
254 intptr_t trace_len; 256 intptr_t trace_len;
255 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 257 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
256 EXPECT_NOT_ERROR(res); 258 EXPECT_NOT_ERROR(res);
257 EXPECT(breakpoint_hit_counter < expected_bpts_length); 259 EXPECT(breakpoint_hit_counter < expected_bpts_length);
258 Dart_ActivationFrame frame; 260 Dart_ActivationFrame frame;
259 res = Dart_GetActivationFrame(trace, 0, &frame); 261 res = Dart_GetActivationFrame(trace, 0, &frame);
260 EXPECT_NOT_ERROR(res); 262 EXPECT_NOT_ERROR(res);
261 Dart_Handle func_name; 263 Dart_Handle func_name;
262 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 264 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
263 EXPECT_NOT_ERROR(res); 265 EXPECT_NOT_ERROR(res);
264 EXPECT(Dart_IsString(func_name)); 266 EXPECT(Dart_IsString(func_name));
265 const char* name_chars; 267 const char* name_chars;
266 Dart_StringToCString(func_name, &name_chars); 268 Dart_StringToCString(func_name, &name_chars);
267 if (breakpoint_hit_counter < expected_bpts_length) { 269 if (breakpoint_hit_counter < expected_bpts_length) {
268 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 270 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
269 } 271 }
270 if (verbose) { 272 if (verbose) {
271 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 273 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
272 } 274 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 }; 334 };
333 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); 335 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts);
334 intptr_t trace_len; 336 intptr_t trace_len;
335 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 337 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
336 EXPECT_NOT_ERROR(res); 338 EXPECT_NOT_ERROR(res);
337 EXPECT(breakpoint_hit_counter < expected_bpts_length); 339 EXPECT(breakpoint_hit_counter < expected_bpts_length);
338 Dart_ActivationFrame frame; 340 Dart_ActivationFrame frame;
339 res = Dart_GetActivationFrame(trace, 0, &frame); 341 res = Dart_GetActivationFrame(trace, 0, &frame);
340 EXPECT_NOT_ERROR(res); 342 EXPECT_NOT_ERROR(res);
341 Dart_Handle func_name; 343 Dart_Handle func_name;
342 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 344 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
343 EXPECT_NOT_ERROR(res); 345 EXPECT_NOT_ERROR(res);
344 EXPECT(Dart_IsString(func_name)); 346 EXPECT(Dart_IsString(func_name));
345 const char* name_chars; 347 const char* name_chars;
346 Dart_StringToCString(func_name, &name_chars); 348 Dart_StringToCString(func_name, &name_chars);
347 if (breakpoint_hit_counter < expected_bpts_length) { 349 if (breakpoint_hit_counter < expected_bpts_length) {
348 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 350 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
349 } 351 }
350 if (verbose) { 352 if (verbose) {
351 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 353 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
352 } 354 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 "moo", "foo", "moo", "foo", "moo", "foo", "main"}; 485 "moo", "foo", "moo", "foo", "moo", "foo", "main"};
484 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); 486 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts);
485 intptr_t trace_len; 487 intptr_t trace_len;
486 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 488 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
487 EXPECT_NOT_ERROR(res); 489 EXPECT_NOT_ERROR(res);
488 EXPECT(breakpoint_hit_counter < expected_bpts_length); 490 EXPECT(breakpoint_hit_counter < expected_bpts_length);
489 Dart_ActivationFrame frame; 491 Dart_ActivationFrame frame;
490 res = Dart_GetActivationFrame(trace, 0, &frame); 492 res = Dart_GetActivationFrame(trace, 0, &frame);
491 EXPECT_NOT_ERROR(res); 493 EXPECT_NOT_ERROR(res);
492 Dart_Handle func_name; 494 Dart_Handle func_name;
493 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 495 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
494 EXPECT_NOT_ERROR(res); 496 EXPECT_NOT_ERROR(res);
495 EXPECT(Dart_IsString(func_name)); 497 EXPECT(Dart_IsString(func_name));
496 const char* name_chars; 498 const char* name_chars;
497 Dart_StringToCString(func_name, &name_chars); 499 Dart_StringToCString(func_name, &name_chars);
498 if (verbose) { 500 if (verbose) {
499 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 501 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
500 } 502 }
501 if (breakpoint_hit_counter < expected_bpts_length) { 503 if (breakpoint_hit_counter < expected_bpts_length) {
502 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 504 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
503 } 505 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 breakpoint_hit_counter++; 543 breakpoint_hit_counter++;
542 intptr_t trace_len; 544 intptr_t trace_len;
543 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 545 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
544 EXPECT_NOT_ERROR(res); 546 EXPECT_NOT_ERROR(res);
545 EXPECT_EQ(expected_trace_length, trace_len); 547 EXPECT_EQ(expected_trace_length, trace_len);
546 for (int i = 0; i < trace_len; i++) { 548 for (int i = 0; i < trace_len; i++) {
547 Dart_ActivationFrame frame; 549 Dart_ActivationFrame frame;
548 res = Dart_GetActivationFrame(trace, i, &frame); 550 res = Dart_GetActivationFrame(trace, i, &frame);
549 EXPECT_NOT_ERROR(res); 551 EXPECT_NOT_ERROR(res);
550 Dart_Handle func_name; 552 Dart_Handle func_name;
551 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 553 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
552 EXPECT_NOT_ERROR(res); 554 EXPECT_NOT_ERROR(res);
553 EXPECT(Dart_IsString(func_name)); 555 EXPECT(Dart_IsString(func_name));
554 const char* name_chars; 556 const char* name_chars;
555 Dart_StringToCString(func_name, &name_chars); 557 Dart_StringToCString(func_name, &name_chars);
556 EXPECT_STREQ(expected_trace[i], name_chars); 558 EXPECT_STREQ(expected_trace[i], name_chars);
557 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 559 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
558 } 560 }
559 } 561 }
560 562
561 563
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 breakpoint_hit_counter++; 637 breakpoint_hit_counter++;
636 intptr_t trace_len; 638 intptr_t trace_len;
637 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); 639 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len);
638 EXPECT_NOT_ERROR(res); 640 EXPECT_NOT_ERROR(res);
639 EXPECT_EQ(expected_trace_length, trace_len); 641 EXPECT_EQ(expected_trace_length, trace_len);
640 for (int i = 0; i < trace_len; i++) { 642 for (int i = 0; i < trace_len; i++) {
641 Dart_ActivationFrame frame; 643 Dart_ActivationFrame frame;
642 res = Dart_GetActivationFrame(trace, i, &frame); 644 res = Dart_GetActivationFrame(trace, i, &frame);
643 EXPECT_NOT_ERROR(res); 645 EXPECT_NOT_ERROR(res);
644 Dart_Handle func_name; 646 Dart_Handle func_name;
645 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL); 647 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
646 EXPECT_NOT_ERROR(res); 648 EXPECT_NOT_ERROR(res);
647 EXPECT(Dart_IsString(func_name)); 649 EXPECT(Dart_IsString(func_name));
648 const char* name_chars; 650 const char* name_chars;
649 Dart_StringToCString(func_name, &name_chars); 651 Dart_StringToCString(func_name, &name_chars);
650 EXPECT_STREQ(expected_trace[i], name_chars); 652 EXPECT_STREQ(expected_trace[i], name_chars);
651 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 653 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
652 } 654 }
653 // Remove the breakpoint after we've hit it twice 655 // Remove the breakpoint after we've hit it twice
654 if (breakpoint_hit_counter == 2) { 656 if (breakpoint_hit_counter == 2) {
655 if (verbose) OS::Print("uninstalling breakpoint\n"); 657 if (verbose) OS::Print("uninstalling breakpoint\n");
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 list_as_string = Dart_ToString(lib_list); 1003 list_as_string = Dart_ToString(lib_list);
1002 list_cstr = ""; 1004 list_cstr = "";
1003 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr)); 1005 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr));
1004 EXPECT_SUBSTRING(TestCase::url(), list_cstr); 1006 EXPECT_SUBSTRING(TestCase::url(), list_cstr);
1005 } 1007 }
1006 1008
1007 1009
1008 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 1010 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
1009 1011
1010 } // namespace dart 1012 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698