Home | History | Annotate | Download | only in cctest

Lines Matching defs:debug

37 #include "debug.h"
51 using ::v8::internal::Debug;
146 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
147 // Expose the debug context global object in the global object for testing.
148 debug->Load();
149 debug->debug_context()->set_security_token(
155 FACTORY->LookupAsciiSymbol("debug");
157 Handle<Object>(debug->debug_context()->global_proxy()), DONT_ENUM,
188 // Is there any debug info for the function?
192 return Debug::HasDebugInfo(shared);
201 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
202 debug->SetBreakPoint(
217 // Set a break point in a function using the Debug object and return the
223 "debug.Debug.setBreakPoint(%s,%d,%d)",
231 // Set a break point in a script identified by id using the global Debug object.
237 "debug.Debug.setScriptBreakPointById(%d,%d,%d)",
242 "debug.Debug.setScriptBreakPointById(%d,%d)",
256 // Set a break point in a script identified by name using the global Debug
264 "debug.Debug.setScriptBreakPointByName(\"%s\",%d,%d)",
269 "debug.Debug.setScriptBreakPointByName(\"%s\",%d)",
285 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
286 debug->ClearBreakPoint(
291 // Clear a break point using the global Debug object.
295 "debug.Debug.clearBreakPoint(%d)",
305 "debug.Debug.enableScriptBreakPoint(%d)",
315 "debug.Debug.disableScriptBreakPoint(%d)",
326 "debug.Debug.changeScriptBreakPointCondition(%d, \"%s\")",
337 "debug.Debug.changeScriptBreakPointIgnoreCount(%d, %d)",
346 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
347 debug->ChangeBreakOnException(v8::internal::BreakException, caught);
348 debug->ChangeBreakOnException(v8::internal::BreakUncaughtException, uncaught);
352 // Change break on exception using the global Debug object.
356 v8::String::New("debug.Debug.setBreakOnException()"))->Run();
359 v8::String::New("debug.Debug.clearBreakOnException()"))->Run();
363 v8::String::New("debug.Debug.setBreakOnUncaughtException()"))->Run();
366 v8::String::New("debug.Debug.clearBreakOnUncaughtException()"))->Run();
373 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
374 debug->PrepareStep(step_action, 1);
379 // v8::internal::Debug.
385 Debug* debug = Isolate::Current()->debug();
387 v8::internal::DebugInfoListNode* node = debug->debug_info_list_;
400 // Run through the debug info objects and collect all functions.
419 // Check that the debugger context is cleared and that there is no debug
421 CHECK(Isolate::Current()->debug()->debug_context().is_null());
422 CHECK_EQ(NULL, Isolate::Current()->debug()->debug_info_list_);
434 // If deep check of functions is requested check that no debug break code
442 CHECK(!Debug::IsDebugBreak(it.rinfo()->target_address()));
444 CHECK(!Debug::IsDebugBreakAtReturn(it.rinfo()));
465 v8::Debug::ProcessDebugMessages();
490 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
497 // Check that the debug break function is as expected.
499 CHECK(Debug::HasDebugInfo(shared));
500 TestBreakLocationIterator it1(Debug::GetDebugInfo(shared));
511 CHECK(Debug::IsDebugBreakAtReturn(it1.it()->rinfo()));
514 // Clear the break point and check that the debug break function is no longer
517 CHECK(!debug->HasDebugInfo(shared));
518 CHECK(debug->EnsureDebugInfo(shared));
519 TestBreakLocationIterator it2(Debug::GetDebugInfo(shared));
527 CHECK(!Debug::IsDebugBreakAtReturn(it2.it()->rinfo()));
534 // --- The different tests uses a number of debug event handlers.
648 // Debug event handler which counts the break points which have been hit.
655 Debug* debug = v8::internal::Isolate::Current()->debug();
656 // When hitting a debug event listener there must be a break set.
657 CHECK_NE(debug->break_id(), 0);
750 // Debug event handler which counts a number of events and collects the stack
766 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
768 // When hitting a debug event listener there must be a break set.
769 CHECK_NE(debug->break_id(), 0);
799 // Debug event handler which evaluates a number of expressions when a break
801 // For this debug event handler to work the following two global varaibles
821 // The actual debug event described by the longer comment above.
826 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
827 // When hitting a debug event listener there must be a break set.
828 CHECK_NE(debug->break_id(), 0);
847 // This debug event listener removes a breakpoint in a function
853 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
854 // When hitting a debug event listener there must be a break set.
855 CHECK_NE(debug->break_id(), 0);
865 // Debug event handler which counts break points hit and performs a step
872 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
873 // When hitting a debug event listener there must be a break set.
874 CHECK_NE(debug->break_id(), 0);
883 // Debug event handler which counts break points hit and performs a step
885 // For this debug
894 // The actual debug event described by the longer comment above.
899 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
900 // When hitting a debug event listener there must be a break set.
901 CHECK_NE(debug->break_id(), 0);
924 // Debug event handler which performs a garbage collection.
930 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
931 // When hitting a debug event listener there must be a break set.
932 CHECK_NE(debug->break_id(), 0);
950 // Debug event handler which re-issues a debug break and calls the garbage
956 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
957 // When hitting a debug event listener there must be a break set.
958 CHECK_NE(debug->break_id(), 0);
969 v8::Debug::DebugBreak();
974 // Debug event handler which re-issues a debug break until a limit has been
982 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
983 // When hitting a debug event listener there must be a break set.
984 CHECK_NE(debug->break_id(), 0);
1003 v8::Debug::DebugBreak();
1038 // Test that the debug break function is the expected one for different kinds
1087 // Check the debug break code stubs for call ICs with different number of
1113 // Test that the debug info in the VM is in sync with the functions being
1156 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1178 v8::Debug::SetDebugEventListener(NULL);
1188 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1211 v8::Debug::SetDebugEventListener(NULL);
1221 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1244 v8::Debug::SetDebugEventListener(NULL);
1254 v8::Debug::SetDebugEventListener(DebugEventBreakPointCollectGarbage,
1277 v8::Debug::SetDebugEventListener(NULL);
1287 v8::Debug::SetDebugEventListener(DebugEventBreakPointCollectGarbage,
1311 v8::Debug::SetDebugEventListener(NULL);
1332 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1358 v8::Debug::SetDebugEventListener(NULL);
1380 v8::Debug::SetDebugEventListener(DebugEventBreakPointCollectGarbage,
1404 // Test debug break slot break point with garbage collection.
1409 v8::Debug::SetDebugEventListener(NULL);
1444 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1491 v8::Debug::SetDebugEventListener(NULL);
1496 // Test that break points can be set using the global Debug object.
1503 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1542 v8::Debug::SetDebugEventListener(NULL);
1552 // global Debug object.
1559 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1644 v8::Debug::SetDebugEventListener(NULL);
1663 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1752 v8::Debug::SetDebugEventListener(NULL);
1772 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1817 v8::Debug::SetDebugEventListener(NULL);
1829 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1879 v8::Debug::SetDebugEventListener(NULL);
1891 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1934 v8::Debug::SetDebugEventListener(NULL);
1946 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
1993 v8::Debug::SetDebugEventListener(NULL);
2005 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2059 v8::Debug::SetDebugEventListener(NULL);
2071 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2115 v8::Debug::SetDebugEventListener(NULL);
2131 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2221 v8::Debug::SetDebugEventListener(NULL);
2232 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2266 v8::Debug::SetDebugEventListener(NULL);
2278 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2299 v8::Debug::SetDebugEventListener(NULL);
2314 // Register the debug event listener pasing the function
2315 v8::Debug::SetDebugEventListener(DebugEventRemoveBreakPoint, foo);
2325 v8::Debug::SetDebugEventListener(NULL);
2335 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2353 v8::Debug::SetDebugEventListener(NULL);
2363 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
2380 v8::Debug::SetDebugEventListener(NULL);
2396 // Register the debug event listener
2397 v8::Debug::SetDebugEventListener(DebugEventEvaluate);
2463 " debug.Debug.clearAllBreakPoints();"
2497 v8::Debug::SetDebugEventListener(NULL);
2585 v8::Debug::ClientData* client_data) {
2604 v8::Debug::SetMessageHandler(DebugProcessDebugMessagesHandler);
2614 v8::Debug::ProcessDebugMessages();
2627 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_111, buffer));
2637 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_112, buffer));
2647 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_113, buffer));
2649 v8::Debug::ProcessDebugMessages();
2658 v8::Debug::SetMessageHandler(NULL);
2659 v8::Debug::SetDebugEventListener(NULL);
2679 // Register a debug event listener which steps and counts.
2680 v8::Debug::SetDebugEventListener(DebugEventStep);
2689 v8::Debug::SetDebugEventListener(NULL);
2692 // Register a debug event listener which just counts.
2693 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount);
2702 v8::Debug::SetDebugEventListener(NULL);
2712 // Register a debug event listener which steps and counts.
2713 v8::Debug::SetDebugEventListener(DebugEventStep);
2750 v8::Debug::SetDebugEventListener(NULL);
2760 // Register a debug event listener which steps and counts.
2761 v8::Debug::SetDebugEventListener(DebugEventStep);
2797 v8::Debug::SetDebugEventListener(NULL);
2807 // Register a debug event listener which steps and counts.
2808 v8::Debug::SetDebugEventListener(DebugEventStep);
2841 v8::Debug::SetDebugEventListener(NULL);
2850 // Register a debug event listener which steps and counts.
2851 v8::Debug::SetDebugEventListener(DebugEventStep);
2876 v8::Debug::SetDebugEventListener(NULL);
2892 // Register a debug event listener which steps and counts.
2893 v8::Debug::SetDebugEventListener(DebugEventStep);
2916 v8::Debug::SetDebugEventListener(NULL);
2919 // Register a debug event listener which just counts.
2920 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount);
2929 v8::Debug::SetDebugEventListener(NULL);
2938 // Register a debug event listener which steps and counts.
2939 v8::Debug::SetDebugEventListener(DebugEventStep);
2961 // Get rid of the debug event listener.
2962 v8::Debug::SetDebugEventListener(NULL);
2971 // Register a debug event listener which steps and counts.
2972 v8::Debug::SetDebugEventListener(DebugEventStep);
2994 // Get rid of the debug event listener.
2995 v8::Debug::SetDebugEventListener(NULL);
3004 // Register a debug event listener which steps and counts.
3005 v8::Debug::SetDebugEventListener(DebugEventStep);
3037 // Get rid of the debug event listener.
3038 v8::Debug::SetDebugEventListener(NULL);
3047 // Register a debug event listener which steps and counts.
3048 v8::Debug::SetDebugEventListener(DebugEventStep);
3093 // Get rid of the debug event listener.
3094 v8::Debug::SetDebugEventListener(NULL);
3103 // Register a debug event listener which steps and counts.
3104 v8::Debug::SetDebugEventListener(DebugEventStep);
3133 // Get rid of the debug event listener.
3134 v8::Debug::SetDebugEventListener(NULL);
3143 // Register a debug event listener which steps and counts.
3144 v8::Debug::SetDebugEventListener(DebugEventStep);
3173 // Get rid of the debug event listener.
3174 v8::Debug::SetDebugEventListener(NULL);
3183 // Register a debug event listener which steps and counts.
3184 v8::Debug::SetDebugEventListener(DebugEventStep);
3214 // Get rid of the debug event listener.
3215 v8::Debug::SetDebugEventListener(NULL);
3224 // Register a debug event listener which steps and counts.
3225 v8::Debug::SetDebugEventListener(DebugEventStep);
3265 // Get rid of the debug event listener.
3266 v8::Debug::SetDebugEventListener(NULL);
3275 // Register a debug event listener which steps and counts.
3276 v8::Debug::SetDebugEventListener(DebugEventStep);
3317 // Get rid of the debug event listener.
3318 v8::Debug::SetDebugEventListener(NULL);
3327 // Register a debug event listener which steps and counts.
3328 v8::Debug::SetDebugEventListener(DebugEventStep);
3365 // Get rid of the debug event listener.
3366 v8::Debug::SetDebugEventListener(NULL);
3375 // Register a debug event listener which steps and counts.
3376 v8::Debug::SetDebugEventListener(DebugEventStep);
3396 // Get rid of the debug event listener.
3397 v8::Debug::SetDebugEventListener(NULL);
3406 // Register a debug event listener which steps and counts.
3407 v8::Debug::SetDebugEventListener(DebugEventStep);
3432 // Get rid of the debug event listener.
3433 v8::Debug::SetDebugEventListener(NULL);
3447 // Register a debug event listener which steps and counts.
3448 v8::Debug::SetDebugEventListener(DebugEventStepSequence);
3483 // Get rid of the debug event listener.
3484 v8::Debug::SetDebugEventListener(NULL);
3498 // Register a debug event listener which steps and counts.
3499 v8::Debug::SetDebugEventListener(DebugEventStepSequence);
3535 // Get rid of the debug event listener.
3536 v8::Debug::SetDebugEventListener(NULL);
3550 // Register a debug event listener which steps and counts.
3551 v8::Debug::SetDebugEventListener(DebugEventStepSequence);
3570 // Get rid of the debug event listener.
3571 v8::Debug::SetDebugEventListener(NULL);
3587 // Register a debug event listener which steps and counts.
3588 v8::Debug::SetDebugEventListener(DebugEventStep);
3597 v8::Debug::SetDebugEventListener(NULL);
3600 // Register a debug event listener which just counts.
3601 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount);
3609 v8::Debug::SetDebugEventListener(NULL);
3626 // Register a debug event listener which steps and counts.
3627 v8::Debug::SetDebugEventListener(DebugEventStep);
3636 v8::Debug::SetDebugEventListener(NULL);
3639 // Register a debug event listener which just counts.
3640 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount);
3648 v8::Debug::SetDebugEventListener(NULL);
3671 // Register a debug event listener which steps and counts.
3672 v8::Debug::SetDebugEventListener(DebugEventStep);
3687 v8::Debug::SetDebugEventListener(NULL);
3690 // Register a debug event listener which just counts.
3691 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount);
3699 v8::Debug::SetDebugEventListener(NULL);
3710 // Register a debug event listener which counts.
3711 v8::Debug::SetDebugEventListener(DebugEventCounter);
3729 // Get rid of the debug event listener.
3730 v8::Debug::SetDebugEventListener(NULL);
3736 // of debug event exception callbacks and message callbacks are collected. The
3737 // number of debug event exception callbacks are used to check that the
3758 v8::Debug::SetDebugEventListener(DebugEventCounter);
3876 v8::Debug::SetDebugEventListener(NULL);
3898 v8::Debug::SetDebugEventListener(DebugEventCounter);
3951 // Register a debug event listener which steps and counts.
3952 v8::Debug::SetDebugEventListener(DebugEventStepSequence);
4023 // Get rid of the debug event listener.
4024 v8::Debug::SetDebugEventListener(NULL);
4034 // only available in debug mode only check for it in that case.
4035 #ifdef DEBUG
4039 // Register a debug event listener which sets the break flag and counts.
4040 v8::Debug::SetDebugEventListener(DebugEventBreak);
4064 // Set the debug break flag.
4065 v8::Debug::DebugBreak();
4079 // Get rid of the debug event listener.
4080 v8::Debug::SetDebugEventListener(NULL);
4085 // Test to ensure that JavaScript code keeps running while the debug break
4091 // Register a debug event listener which sets the break flag and counts.
4092 v8::Debug::SetDebugEventListener(DebugEventCounter);
4098 // Set the debug break flag.
4099 v8::Debug::DebugBreak();
4107 v8::Debug::DebugBreak();
4116 // Get rid of the debug event listener.
4117 v8::Debug::SetDebugEventListener(NULL);
4127 // Test that debug break is disabled when bootstrapper is active.
4131 // Register a debug event listener which sets the break flag and counts.
4132 v8::Debug::SetDebugEventListener(DebugEventCounter);
4134 // Set the debug break flag.
4135 v8::Debug::DebugBreak();
4150 // Get rid of the debug event listener.
4151 v8::Debug::SetDebugEventListener(NULL);
4196 // Create a V8 environment with debug access.
4225 "var named_mirror = debug.MakeMirror(intercepted_named);"
4226 "var indexed_mirror = debug.MakeMirror(intercepted_indexed);"
4227 "var both_mirror = debug.MakeMirror(intercepted_both)");
4229 "named_mirror instanceof debug.ObjectMirror")->BooleanValue());
4231 "indexed_mirror instanceof debug.ObjectMirror")->BooleanValue());
4233 "both_mirror instanceof debug.ObjectMirror")->BooleanValue());
4274 "named_values[%d] instanceof debug.PropertyMirror", i);
4293 "indexed_values[%d] instanceof debug.PropertyMirror", i);
4304 OS::SNPrintF(buffer, "both_values[%d] instanceof debug.PropertyMirror", i);
4327 // Create a V8 environment with debug access.
4355 "var o0_mirror = debug.MakeMirror(o0);"
4356 "var o1_mirror = debug.MakeMirror(o1);"
4357 "var o2_mirror = debug.MakeMirror(o2);"
4358 "var o3_mirror = debug.MakeMirror(o3)");
4359 CHECK(CompileRun("o0_mirror instanceof debug.ObjectMirror")->BooleanValue());
4360 CHECK(CompileRun("o1_mirror instanceof debug.ObjectMirror")->BooleanValue());
4361 CHECK(CompileRun("o2_mirror instanceof debug.ObjectMirror")->BooleanValue());
4362 CHECK(CompileRun("o3_mirror instanceof debug.ObjectMirror")->BooleanValue());
4428 // Create a V8 environment with debug access.
4444 CompileRun("var instance_mirror = debug.MakeMirror(instance);");
4446 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue());
4465 // Create a V8 environment with debug access.
4480 CompileRun("var instance_mirror = debug.MakeMirror(instance);");
4482 "instance_mirror instanceof debug.ObjectMirror")->BooleanValue());
4500 // Create a V8 environment with debug access.
4511 obj->SetHiddenValue(v8::String::New("v8::test-debug::a"),
4515 CompileRun("var obj_mirror = debug.MakeMirror(obj);");
4517 "obj_mirror instanceof debug.ObjectMirror")->BooleanValue());
4537 protoObj->SetHiddenValue(v8::String::New("v8::test-debug::b"),
4541 grandProtoObj->SetHiddenValue(v8::String::New("v8::test-debug::c"),
4550 CompileRun("var obj_mirror = debug.MakeMirror(obj);");
4552 "obj_mirror instanceof debug.ObjectMirror")->BooleanValue());
4747 v8::Debug::ClientData* client_data) {
4799 v8::Debug::SendCommand(buffer_1, AsciiToUtf16(command_1, buffer_1));
4800 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_2, buffer_2));
4801 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_3, buffer_2));
4802 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_3, buffer_2));
4803 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_3, buffer_2));
4823 v8::Debug::SendCommand(buffer_1, AsciiToUtf16(command_1, buffer_1));
4824 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_2, buffer_2));
4825 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_3, buffer_2));
4826 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_single_step, buffer_2));
4833 v8::Debug::SendCommand(buffer_1, AsciiToUtf16(command_2, buffer_1));
4834 v8::Debug::SendCommand(buffer_2, AsciiToUtf16(command_continue, buffer_2));
4851 v8::Debug::SetMessageHandler(MessageHandler);
4871 class TestClientData : public v8::Debug::ClientData {
4930 const v8::Debug::Message& message) {
4944 v8::Debug::SetMessageHandler2(MessageHandlerCountingClientData);
4963 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_1, buffer),
4965 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer), NULL);
4966 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer),
4968 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer),
4972 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_continue, buffer));
5009 static void ThreadedMessageHandler(const v8::Debug::Message& message) {
5045 v8::Debug::SetMessageHandler2(&ThreadedMessageHandler);
5068 v8::Debug::DebugBreak();
5070 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_1, buffer));
5071 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer));
5118 static void BreakpointsMessageHandler(const v8::Debug::Message& message) {
5158 v8::Debug::SetMessageHandler2(&BreakpointsMessageHandler);
5232 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_1, buffer));
5234 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer));
5246 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_3, buffer));
5252 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_4, buffer));
5258 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_5, buffer));
5265 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_6, buffer));
5271 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_7, buffer));
5277 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_8, buffer));
5315 v8::Debug::SetDebugEventListener(DummyDebugEventListener);
5319 static void DummyMessageHandler(const v8::Debug::Message& message) {
5324 v8::Debug::SetMessageHandler2(DummyMessageHandler);
5329 v8::Debug::DebugBreak();
5337 v8::Debug::SendCommand(dummy_buffer, dummy_length);
5367 CHECK(v8::Debug::Call(frame_count)->IsNumber());
5369 v8::Debug::Call(frame_count)->Int32Value());
5377 CHECK(v8::Debug::Call(frame_source_line)->IsNumber());
5379 v8::Debug::Call(frame_source_line)->Int32Value());
5389 CHECK(v8::Debug::Call(debugger_call_with_data, data)->IsString());
5391 CHECK(v8::Debug::Call(debugger_call_with_data).IsEmpty());
5392 CHECK(v8::Debug::Call(debugger_call_with_data).IsEmpty());
5395 v8::Debug::Call(debugger_call_with_data);
5405 CHECK(v8::Debug::Call(debugger_call_with_closure)->IsNumber());
5406 CHECK_EQ(3, v8::Debug::Call(debugger_call_with_closure)->Int32Value());
5450 CHECK_EQ(v8::Integer::New(0), v8::Debug::Call(frame_count));
5488 const v8::Debug::Message& message) {
5498 // Test that clearing the debug event listener actually clears all break points
5506 // Set a debug event listener.
5508 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
5532 // Remove the debug event listener without clearing breakpoints. Do this
5534 v8::Debug::SetDebugEventListener(NULL);
5537 // Now set a debug message handler.
5539 v8::Debug::SetMessageHandler2(MessageHandlerBreakPointHitCount);
5557 // Remove the debug message handler without clearing breakpoints. Do this
5559 v8::Debug::SetMessageHandler2(NULL);
5573 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_continue, buffer));
5579 static void MessageHandlerHitCount(const v8::Debug::Message& message) {
5592 // Test clearing the debug message handler.
5600 // Set a debug message handler.
5601 v8::Debug::SetMessageHandler2(MessageHandlerHitCount);
5610 // Clear debug message handler.
5612 v8::Debug::SetMessageHandler(NULL);
5627 const v8::Debug::Message& message) {
5630 // Clear debug message handler.
5631 v8::Debug::SetMessageHandler(NULL);
5635 // Test clearing the debug message handler while processing a debug event.
5643 // Set a debug message handler.
5644 v8::Debug::SetMessageHandler2(MessageHandlerClearingMessageHandler);
5676 static void HostDispatchMessageHandler(const v8::Debug::Message& message) {
5705 v8::Debug::SetMessageHandler2(HostDispatchMessageHandler);
5706 v8::Debug::SetHostDispatchHandler(HostDispatchDispatchHandler, 10 /* ms */);
5730 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_1, buffer));
5738 v8::Debug::SendCommand(buffer, AsciiToUtf16(command_2, buffer));
5761 /* In this test, the V8 thread waits for a message from the debug thread.
5792 // Set up debug message dispatch handler.
5793 v8::Debug::SetDebugMessageDispatchHandler(DebugMessageHandler);
6065 v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount,
6127 // Check that the expected context is the one generating the debug event.
6128 static void ContextCheckMessageHandler(const v8::Debug::Message& message) {
6146 // Checks that this data is set correctly and that when the debug message
6151 v8::Debug::SetMessageHandler2(ContextCheckMessageHandler);
6199 v8::Debug::SetMessageHandler2(NULL);
6204 // Debug message handler which issues a debug break when it hits a break event.
6206 static void DebugBreakMessageHandler(const v8::Debug::Message& message) {
6207 // Schedule a debug break for break events.
6211 v8::Debug::DebugBreak();
6223 // Test that a debug break can be scheduled while in a message handler.
6228 v8::Debug::SetMessageHandler2(DebugBreakMessageHandler);
6249 // Debug event handler which gets the function on the top frame and schedules a
6278 v8::Debug::DebugBreak();
6306 v8::Debug::SetDebugEventListener(DebugEventDebugBreak);
6307 v8::Debug::DebugBreak();
6349 // data is set correctly and that when the debug message handler is called for
6354 v8::Debug::SetMessageHandler2(ContextCheckMessageHandler);
6360 v8::Debug::SetMessageHandler2(NULL);
6368 // Check that the expected context is the one generating the debug event
6371 const v8::Debug::Message& message) {
6396 v8::Debug::SendCommand(buffer, AsciiToUtf16(eval_command, buffer));
6419 v8::Debug::SetMessageHandler2(DebugEvalContextCheckMessageHandler);
6428 v8::Debug::SetMessageHandler2(NULL);
6433 // Debug event listener which counts the script collected events.
6446 // Test that scripts collected are reported through the debug event listener.
6448 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
6455 debug->GetLoadedScripts();
6462 v8::Debug::SetDebugEventListener(DebugEventScriptCollectedEvent,
6475 v8::Debug::SetDebugEventListener(NULL);
6480 // Debug event listener which counts the script collected events.
6482 static void ScriptCollectedMessageHandler(const v8::Debug::Message& message) {
6495 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
6503 debug->GetLoadedScripts();
6509 v8::Debug::SetMessageHandler2(ScriptCollectedMessageHandler);
6522 v8::Debug::SetMessageHandler2(NULL);
6526 // Debug event listener which counts the after compile events.
6528 static void AfterCompileMessageHandler(const v8::Debug::Message& message) {
6548 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6550 v8::Debug::SetMessageHandler2(NULL);
6552 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6553 v8::Debug::DebugBreak();
6557 v8::Debug::SetMessageHandler2(NULL);
6572 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6574 v8::Debug::SetMessageHandler2(NULL);
6576 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6577 v8::Debug::DebugBreak();
6583 v8::Debug::SetMessageHandler2(NULL);
6592 static void ExceptionMessageHandler(const v8::Debug::Message& message) {
6611 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6613 v8::Debug::SetMessageHandler2(NULL);
6615 v8::Debug::SetMessageHandler2(ExceptionMessageHandler);
6621 v8::Debug::SetMessageHandler2(NULL);
6644 v8::Debug::SetMessageHandler2(AfterCompileMessageHandler);
6661 v8::Debug::SetMessageHandler2(NULL);
6665 static void BreakMessageHandler(const v8::Debug::Message& message) {
6696 // debug-delay.js is executed.
6701 // Register a debug event listener which sets the break flag and counts.
6702 v8::Debug::SetMessageHandler2(BreakMessageHandler);
6704 // Set the debug break flag.
6705 v8::Debug::DebugBreak();
6714 // Set the debug break flag again.
6715 v8::Debug::DebugBreak();
6720 // Get rid of the debug message handler.
6721 v8::Debug::SetMessageHandler2(NULL);
6728 static void CountingMessageHandler(const v8::Debug::Message& message) {
6732 // Test that debug messages get processed when ProcessDebugMessages is called.
6739 v8::Debug::SetMessageHandler2(CountingMessageHandler);
6749 v8::Debug::SendCommand(buffer, AsciiToUtf16(scripts_command, buffer));
6752 v8::Debug::ProcessDebugMessages();
6758 v8::Debug::SendCommand(buffer, AsciiToUtf16(scripts_command, buffer));
6759 v8::Debug::SendCommand(buffer, AsciiToUtf16(scripts_command, buffer));
6761 v8::Debug::ProcessDebugMessages();
6765 // Get rid of the debug message handler.
6766 v8::Debug::SetMessageHandler2(NULL);
6773 static void MessageHandler(const v8::Debug::Message& message) {
6788 // Test that debug messages get processed when ProcessDebugMessages is called.
6793 v8::Debug::SetMessageHandler2(BacktraceData::MessageHandler);
6804 v8::Debug::SendCommand(buffer, AsciiToUtf16(scripts_command, buffer));
6805 v8::Debug::ProcessDebugMessages();
6813 v8::Debug::SendCommand(buffer, AsciiToUtf16(scripts_command, buffer));
6817 // Get rid of the debug message handler.
6818 v8::Debug::SetMessageHandler2(NULL);
6826 v8::Handle<v8::Value> obj = v8::Debug::GetMirror(v8::String::New("hodja"));
6840 // Test that the debug break flag works with function.apply.
6853 debug event listener which steps and counts.
6854 v8::Debug::SetDebugEventListener(DebugEventBreakMax);
6856 // Set the debug break flag before calling the code using function.apply.
6857 v8::Debug::DebugBreak();
6859 // Limit the number of debug breaks. This is a regression test for issue 493
6865 // When keeping the debug break several break will happen.
6868 v8::Debug::SetDebugEventListener(NULL);
6893 // Debug event listener that checks if the first argument of a function is
6918 v8::internal::Debug* debug = v8::internal::Isolate::Current()->debug();
6927 debugger_context = v8::Utils::ToLocal(debug->debug_context());
6936 // Register the debug event listener
6937 v8::Debug::SetDebugEventListener(DebugEventGetAtgumentPropertyValue);
6950 v8::Debug::SetDebugEventListener(NULL);
6959 v8::Local<v8::Context> context1 = v8::Debug::GetDebugContext();
6960 v8::Local<v8::Context> context2 = v8::Debug::GetDebugContext();
6966 static void DebugEventContextChecker(const v8::Debug::EventDetails& details) {
6971 // Check that event details contain context where debug event occured.
6975 v8::Debug::SetDebugEventListener2(DebugEventContextChecker,
6982 v8::Debug::SetDebugEventListener(NULL);
6991 static void DebugEventBreakDataChecker(const v8::Debug::EventDetails& details) {
7001 // Check that event details contain context where debug event occured.
7005 v8::Debug::SetDebugEventListener2(DebugEventBreakDataChecker);
7013 v8::Debug::DebugBreakForCommand();
7022 v8::Debug::DebugBreakForCommand(data1);
7030 v8::Debug::DebugBreak();
7039 v8::Debug::DebugBreak();
7040 v8::Debug::DebugBreakForCommand(data2);
7049 v8::Debug::SetDebugEventListener(NULL);
7078 v8::Debug::DebugBreak();
7083 // Test deoptimization when execution is broken using the debug break stack
7096 // Set a debug event listener which will keep interrupting execution until
7097 // debug break. When inside function bar it will deoptimize all functions.
7099 // time in function bar when using debug break and no break points will be at
7101 v8::Debug::SetDebugEventListener(DebugEventBreakDeoptimize,
7107 // Set debug break and call bar again.
7108 v8::Debug::DebugBreak();
7113 v8::Debug::SetDebugEventListener(NULL);
7165 v8::Debug::SetDebugEventListener(DebugEventBreakWithOptimizedStack,
7167 v8::Debug::DebugBreak();
7204 // Test that setting the terminate execution flag during debug break processing.
7232 // Set the debug break to enter the debugger as soon as possible.
7233 v8::Debug::DebugBreak();
7249 // Register a debug event listener which sets the break flag and counts.
7250 v8::Debug::SetDebugEventListener(DebugEventBreakMax);
7283 // Get rid of the debug event listener.
7284 v8::Debug::SetDebugEventListener(NULL);
7304 debug()->break_id();
7321 v8::Debug::SetDebugEventListener(NULL);
7331 "function debug(b) { \n"
7335 " debug(b) \n"
7344 v8::Debug::SetDebugEventListener(DebugBreakInlineListener);