Index: test/cctest/test-debug.cc |
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc |
index ab27f394e9aa3eae108605022cccad977051a5dc..192dce7b9f635fa9c7f421bf2729bb3e1244635f 100644 |
--- a/test/cctest/test-debug.cc |
+++ b/test/cctest/test-debug.cc |
@@ -8185,3 +8185,36 @@ TEST(DebugStepNextTailCallEliminiation) { |
ExpectString("JSON.stringify(log)", |
"[\"a4\",\"b2\",\"c4\",\"e0\",\"e0\",\"e0\",\"e0\",\"f0\"]"); |
} |
+ |
+size_t current_action = 0; |
+StepAction actions[] = {StepNext, StepNext}; |
+static void DebugStepOverFunctionWithCaughtExceptionListener( |
+ const v8::Debug::EventDetails& event_details) { |
+ v8::DebugEvent event = event_details.GetEvent(); |
+ if (event != v8::Break) return; |
+ ++break_point_hit_count; |
+ if (current_action >= 2) return; |
+ PrepareStep(actions[current_action]); |
+} |
+ |
+TEST(DebugStepOverFunctionWithCaughtException) { |
+ i::FLAG_allow_natives_syntax = true; |
+ |
+ DebugLocalContext env; |
+ v8::Isolate* isolate = env->GetIsolate(); |
+ v8::HandleScope scope(isolate); |
+ v8::Debug::SetDebugEventListener( |
+ isolate, DebugStepOverFunctionWithCaughtExceptionListener); |
+ |
+ break_point_hit_count = 0; |
+ CompileRun( |
+ "function foo() {\n" |
+ " try { throw new Error(); } catch (e) {}\n" |
+ "}\n" |
+ "debugger;\n" |
+ "foo();\n" |
+ "foo();\n"); |
+ |
+ v8::Debug::SetDebugEventListener(env->GetIsolate(), nullptr); |
+ CHECK_EQ(break_point_hit_count, 4); |
+} |