Skip to content

Commit 5cc1359

Browse files
committed
Debug CI
1 parent 56b86aa commit 5cc1359

File tree

3 files changed

+38
-5
lines changed

3 files changed

+38
-5
lines changed

lldb/source/Plugins/Language/Swift/SwiftFrameRecognizers.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,8 @@ class SwiftExceptionBreakpointFrameRecognizer : public StackFrameRecognizer {
242242

243243
StringRef symbol_name;
244244
{
245-
SymbolContext sc = m_frame_sp->GetSymbolContext(eSymbolContextSymbol);
245+
const SymbolContext &sc =
246+
m_frame_sp->GetSymbolContext(eSymbolContextSymbol);
246247
if (!sc.symbol)
247248
return {};
248249
symbol_name = sc.symbol->GetName();
@@ -260,7 +261,7 @@ class SwiftExceptionBreakpointFrameRecognizer : public StackFrameRecognizer {
260261

261262
{
262263
// Check if source is available for the identified frame.
263-
SymbolContext sc =
264+
const SymbolContext &sc =
264265
relevant_frame_sp->GetSymbolContext(eSymbolContextCompUnit);
265266
if (!sc.comp_unit)
266267
return {};

lldb/source/Target/StackFrameRecognizer.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "lldb/Target/StackFrameRecognizer.h"
10+
#include "lldb/Core/Mangled.h"
1011
#include "lldb/Core/Module.h"
1112
#include "lldb/Interpreter/ScriptInterpreter.h"
1213
#include "lldb/Symbol/Symbol.h"
@@ -141,7 +142,7 @@ StackFrameRecognizerManager::GetRecognizerForFrame(StackFrameSP frame) {
141142
Address start_addr = symbol->GetAddress();
142143
Address current_addr = frame->GetFrameCodeAddress();
143144

144-
for (auto entry : m_recognizers) {
145+
for (const auto &entry : m_recognizers) {
145146
if (entry.module)
146147
if (entry.module != module_name)
147148
continue;
@@ -166,6 +167,14 @@ StackFrameRecognizerManager::GetRecognizerForFrame(StackFrameSP frame) {
166167

167168
return entry.recognizer;
168169
}
170+
171+
LLDB_LOG(GetLog(LLDBLog::Symbols),
172+
"Did not recognize frame: module={0} symbol={1]} mangled={2} "
173+
"demangled={3}",
174+
module_name, symbol->GetName(),
175+
symctx.GetFunctionName(Mangled::ePreferMangled),
176+
symctx.GetFunctionName(Mangled::ePreferDemangled));
177+
169178
return StackFrameRecognizerSP();
170179
}
171180

lldb/test/API/lang/swift/exception_breakpoint_recognizer/TestSwiftExceptionBreakpointRecognizer.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,41 @@ def test(self):
1111
target = lldbutil.run_to_breakpoint_make_target(self)
1212
bp = target.BreakpointCreateForException(lldb.eLanguageTypeSwift, False, True)
1313

14+
log_file = self.getBuildArtifact("symbol.log")
15+
self.runCmd("log enable lldb symbols -f {log_file}")
16+
1417
# First breakpoint in an untyped throws function.
1518
_, process, _, _ = lldbutil.run_to_breakpoint_do_run(self, target, bp)
1619
thread = process.selected_thread
1720
stop_desc = thread.GetStopDescription(128)
1821
# self.assertEqual(stop_desc, "Swift exception breakpoint")
1922
self.assertEqual(thread.frame[0].symbol.name, "swift_willThrow")
20-
self.assertEqual(thread.selected_frame.idx, 1)
23+
# self.assertEqual(thread.selected_frame.idx, 1)
24+
if thread.selected_frame.idx != 1:
25+
r = lldb.SBCommandReturnObject()
26+
self.ci.HandleCommand("frame recognizer list", r)
27+
info = r.GetOutput()
28+
r = lldb.SBCommandReturnObject()
29+
self.ci.HandleCommand("frame recognizer info 0", r)
30+
info += r.GetOutput()
31+
with open(log_file) as f:
32+
info += f.read()
33+
self.assertIn("qowieoiuqweoiq", info)
2134

2235
# Second breakpoint in an typed throws function.
2336
process.Continue()
2437
thread = process.selected_thread
2538
stop_desc = thread.GetStopDescription(128)
2639
# self.assertEqual(stop_desc, "Swift exception breakpoint")
2740
self.assertEqual(thread.frame[0].symbol.name, "swift_willThrowTypedImpl")
28-
self.assertEqual(thread.selected_frame.idx, 2)
41+
# self.assertEqual(thread.selected_frame.idx, 2)
42+
if thread.selected_frame.idx != 2:
43+
r = lldb.SBCommandReturnObject()
44+
self.ci.HandleCommand("frame recognizer list", r)
45+
info = r.GetOutput()
46+
r = lldb.SBCommandReturnObject()
47+
self.ci.HandleCommand("frame recognizer info 0", r)
48+
info += r.GetOutput()
49+
with open(log_file) as f:
50+
info += f.read()
51+
self.assertIn("qowieoiuqweoiq", info)

0 commit comments

Comments
 (0)