Index: lit/SymbolFile/PDB/Inputs/BPOnEntryTest.cpp =================================================================== --- /dev/null +++ lit/SymbolFile/PDB/Inputs/BPOnEntryTest.cpp @@ -0,0 +1,7 @@ +int sum(int a, int b) { + return a + b; +} + +int main() { + return sum(-1, 1); +} Index: lit/SymbolFile/PDB/Inputs/BPOnEntryTest.script =================================================================== --- /dev/null +++ lit/SymbolFile/PDB/Inputs/BPOnEntryTest.script @@ -0,0 +1,3 @@ +breakpoint set --file BPOnEntryTest.cpp --name main +run +print sum(3, 4) Index: lit/SymbolFile/PDB/bp-on-entry.test =================================================================== --- /dev/null +++ lit/SymbolFile/PDB/bp-on-entry.test @@ -0,0 +1,7 @@ +REQUIRES: windows +RUN: clang-cl /Zi /GS- /c %S/Inputs/BPOnEntryTest.cpp /Fo%t.obj +RUN: lld-link /debug:full /nodefaultlib /entry:main %t.obj /out:%t.exe +RUN: %lldb -b -s %S/Inputs/BPOnEntryTest.script -- %t.exe | FileCheck %s + +CHECK: (lldb) print sum(3, 4) +CHECK: (int) $0 = 7 Index: source/Target/StopInfo.cpp =================================================================== --- source/Target/StopInfo.cpp +++ source/Target/StopInfo.cpp @@ -333,6 +333,13 @@ // commands when we see the same breakpoint hit a second time. m_should_stop_is_valid = true; + + if (thread_sp->CompletedPlanOverridesBreakpoint()) { + m_should_stop = true; + thread_sp->ResetStopInfo(); + return; + } + if (log) log->Printf("StopInfoBreakpoint::PerformAction - Hit a " "breakpoint while running an expression,"