diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim
index 81e8658..4601319 100644
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -947,7 +947,7 @@
     def LocalFunc()
       echo "first"
       echo "second"
-      breakadd func 1 LegacyFunc
+      breakadd func LegacyFunc
       LegacyFunc()
     enddef
 
@@ -1010,6 +1010,13 @@
            eval 1
          enddef
     enddef
+    def g:FuncComment()
+      # comment
+      echo "first"
+         .. "one"
+      # comment
+      echo "second"
+    enddef
   END
   call writefile(file, 'Xtest.vim')
 
@@ -1049,6 +1056,12 @@
                 \ ['cmd: call FuncWithDict()'])
   call RunDbgCmd(buf, 'step', ['line 1: var d = {  a: 1,  b: 2,  }'])
   call RunDbgCmd(buf, 'step', ['line 6: def Inner()'])
+  call RunDbgCmd(buf, 'cont')
+
+  call RunDbgCmd(buf, ':breakadd func 1 FuncComment')
+  call RunDbgCmd(buf, ':call FuncComment()', ['function FuncComment', 'line 2: echo "first"  .. "one"'])
+  call RunDbgCmd(buf, ':breakadd func 3 FuncComment')
+  call RunDbgCmd(buf, 'cont', ['function FuncComment', 'line 5: echo "second"'])
 
   call RunDbgCmd(buf, 'cont')
   call StopVimInTerminal(buf)
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 7938d91..1d100e0 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -2176,7 +2176,9 @@
 enddef
 
 def s:Profiled(): string
+  # comment
   echo "profiled"
+  # comment
   var some = "some text"
   return "done"
 enddef
@@ -2187,18 +2189,20 @@
   endif
   var res = execute('disass profile s:Profiled')
   assert_match('<SNR>\d*_Profiled\_s*' ..
+        '# comment\_s*' ..
         'echo "profiled"\_s*' ..
-        '\d PROFILE START line 1\_s*' ..
+        '\d PROFILE START line 2\_s*' ..
         '\d PUSHS "profiled"\_s*' ..
         '\d ECHO 1\_s*' ..
+        '# comment\_s*' ..
         'var some = "some text"\_s*' ..
         '\d PROFILE END\_s*' ..
-        '\d PROFILE START line 2\_s*' ..
+        '\d PROFILE START line 4\_s*' ..
         '\d PUSHS "some text"\_s*' ..
         '\d STORE $0\_s*' ..
         'return "done"\_s*' ..
         '\d PROFILE END\_s*' ..
-        '\d PROFILE START line 3\_s*' ..
+        '\d PROFILE START line 5\_s*' ..
         '\d PUSHS "done"\_s*' ..
         '\d\+ RETURN\_s*' ..
         '\d\+ PROFILE END',
@@ -2208,16 +2212,18 @@
 def Test_debugged()
   var res = execute('disass debug s:Profiled')
   assert_match('<SNR>\d*_Profiled\_s*' ..
+        '# comment\_s*' ..
         'echo "profiled"\_s*' ..
-        '\d DEBUG line 1 varcount 0\_s*' ..
+        '\d DEBUG line 1-2 varcount 0\_s*' ..
         '\d PUSHS "profiled"\_s*' ..
         '\d ECHO 1\_s*' ..
+        '# comment\_s*' ..
         'var some = "some text"\_s*' ..
-        '\d DEBUG line 2 varcount 0\_s*' ..
+        '\d DEBUG line 3-4 varcount 0\_s*' ..
         '\d PUSHS "some text"\_s*' ..
         '\d STORE $0\_s*' ..
         'return "done"\_s*' ..
-        '\d DEBUG line 3 varcount 1\_s*' ..
+        '\d DEBUG line 5-5 varcount 1\_s*' ..
         '\d PUSHS "done"\_s*' ..
         '\d RETURN\_s*',
         res)
diff --git a/src/version.c b/src/version.c
index 4d89fc2..83c7460 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3039,
+/**/
     3038,
 /**/
     3037,
diff --git a/src/vim9.h b/src/vim9.h
index 58d451c..97b9a3e 100644
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -168,8 +168,7 @@
     ISN_PROF_START, // start a line for profiling
     ISN_PROF_END,   // end a line for profiling
 
-    ISN_DEBUG,	    // check for debug breakpoint, isn_arg.number is current
-		    // number of local variables
+    ISN_DEBUG,	    // check for debug breakpoint, uses isn_arg.debug
 
     ISN_UNPACK,	    // unpack list into items, uses isn_arg.unpack
     ISN_SHUFFLE,    // move item on stack up or down
@@ -391,6 +390,12 @@
     int		invert;
 } tobool_T;
 
+// arguments to ISN_DEBUG
+typedef struct {
+    varnumber_T	dbg_var_names_len;  // current number of local variables
+    int		dbg_break_lnum;	    // first line to break after
+} debug_T;
+
 /*
  * Instruction
  */
@@ -439,6 +444,7 @@
 	tostring_T	    tostring;
 	tobool_T	    tobool;
 	getitem_T	    getitem;
+	debug_T		    debug;
     } isn_arg;
 };
 
diff --git a/src/vim9compile.c b/src/vim9compile.c
index c5a2c2d..e78a032 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -174,6 +174,9 @@
     char_u	*ctx_line_start;    // start of current line or NULL
     garray_T	ctx_instr;	    // generated instructions
 
+    int		ctx_prev_lnum;	    // line number below previous command, for
+				    // debugging
+
     compiletype_T ctx_compile_type;
 
     garray_T	ctx_locals;	    // currently visible local variables
@@ -585,7 +588,8 @@
 
     if ((isn = generate_instr(cctx, ISN_DEBUG)) == NULL)
 	return NULL;
-    isn->isn_arg.number = dfunc->df_var_names.ga_len;
+    isn->isn_arg.debug.dbg_var_names_len = dfunc->df_var_names.ga_len;
+    isn->isn_arg.debug.dbg_break_lnum = cctx->ctx_prev_lnum;
     return isn;
 }
 
@@ -9270,6 +9274,7 @@
 	    debug_lnum = cctx.ctx_lnum;
 	    generate_instr_debug(&cctx);
 	}
+	cctx.ctx_prev_lnum = cctx.ctx_lnum + 1;
 
 	// Some things can be recognized by the first character.
 	switch (*ea.cmd)
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 6d0da61..3233e3c 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1473,14 +1473,14 @@
 
 	// check for the next breakpoint if needed
 	breakpoint = dbg_find_breakpoint(FALSE, ufunc->uf_name,
-							   iptr->isn_lnum - 1);
+					   iptr->isn_arg.debug.dbg_break_lnum);
 	if (breakpoint <= 0 || breakpoint > iptr->isn_lnum)
 	    return;
     }
 
     SOURCING_LNUM = iptr->isn_lnum;
     debug_context = ectx;
-    debug_var_count = iptr->isn_arg.number;
+    debug_var_count = iptr->isn_arg.debug.dbg_var_names_len;
 
     for (ni = iptr + 1; ni->isn_type != ISN_FINISH; ++ni)
 	if (ni->isn_type == ISN_DEBUG
@@ -5476,8 +5476,10 @@
 		break;
 
 	    case ISN_DEBUG:
-		smsg("%s%4d DEBUG line %d varcount %lld", pfx, current,
-					 iptr->isn_lnum, iptr->isn_arg.number);
+		smsg("%s%4d DEBUG line %d-%d varcount %lld", pfx, current,
+			iptr->isn_arg.debug.dbg_break_lnum + 1,
+			iptr->isn_lnum,
+			iptr->isn_arg.debug.dbg_var_names_len);
 		break;
 
 	    case ISN_UNPACK: smsg("%s%4d UNPACK %d%s", pfx, current,
