@@ -1523,12 +1523,22 @@ def build_exception_info_response(dbg, thread_id, thread, request_seq, set_addit
15231523 if IS_PY311_OR_GREATER :
15241524 stack_summary = traceback .StackSummary ()
15251525 for filename_in_utf8 , lineno , method_name , line_text , line_col_info in frames [- max_frames :]:
1526- frame_summary = traceback .FrameSummary (filename_in_utf8 , lineno , method_name , line = line_text )
15271526 if line_col_info is not None :
1528- frame_summary .end_lineno = line_col_info .end_lineno
1529- frame_summary .colno = line_col_info .colno
1530- frame_summary .end_colno = line_col_info .end_colno
1531- stack_summary .append (frame_summary )
1527+ # End line might mean that we have a multiline statement.
1528+ if line_col_info .end_lineno is not None and lineno < line_col_info .end_lineno :
1529+ line_text = "\n " .join (linecache .getlines (filename_in_utf8 )[lineno : line_col_info .end_lineno + 1 ])
1530+ frame_summary = traceback .FrameSummary (
1531+ filename_in_utf8 ,
1532+ lineno ,
1533+ method_name ,
1534+ line = line_text ,
1535+ end_lineno = line_col_info .end_lineno ,
1536+ colno = line_col_info .colno ,
1537+ end_colno = line_col_info .end_colno )
1538+ stack_summary .append (frame_summary )
1539+ else :
1540+ frame_summary = traceback .FrameSummary (filename_in_utf8 , lineno , method_name , line = line_text )
1541+ stack_summary .append (frame_summary )
15321542
15331543 stack_str = "" .join (stack_summary .format ())
15341544
0 commit comments