File tree Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change 19
19
#include " lldb/API/SBFileSpec.h"
20
20
#include " lldb/API/SBFrame.h"
21
21
#include " lldb/API/SBFunction.h"
22
+ #include " lldb/API/SBInstruction.h"
23
+ #include " lldb/API/SBInstructionList.h"
22
24
#include " lldb/API/SBLineEntry.h"
23
25
#include " lldb/API/SBModule.h"
24
26
#include " lldb/API/SBQueue.h"
@@ -776,10 +778,12 @@ llvm::json::Value CreateStackFrame(lldb::SBFrame &frame,
776
778
777
779
// Calculate the line of the current PC from the start of the current
778
780
// symbol.
779
- lldb::addr_t inst_offset = frame.GetPCAddress ().GetOffset () -
780
- frame.GetSymbol ().GetStartAddress ().GetOffset ();
781
- lldb::addr_t inst_line =
782
- inst_offset / (frame.GetThread ().GetProcess ().GetAddressByteSize () / 2 );
781
+ lldb::SBAddress current_address = frame.GetPCAddress ();
782
+ lldb::SBTarget target = frame.GetThread ().GetProcess ().GetTarget ();
783
+ lldb::SBInstructionList inst_list =
784
+ target.ReadInstructions (frame.GetSymbol ().GetStartAddress (), current_address, nullptr );
785
+ size_t inst_line = inst_list.GetSize ();
786
+
783
787
// Line numbers are 1-based.
784
788
object.try_emplace (" line" , inst_line + 1 );
785
789
object.try_emplace (" column" , 1 );
You can’t perform that action at this time.
0 commit comments