@@ -1204,8 +1204,6 @@ sub _reset_breakpoint
1204
1204
{
1205
1205
$perl_breakpoints_map -> {$real_line } = 0;
1206
1206
}
1207
-
1208
- return 1;
1209
1207
}
1210
1208
1211
1209
sub _set_run_to_cursor_breakpoint
@@ -1228,16 +1226,14 @@ sub _set_breakpoint
1228
1226
_report ' Setting breakpoint to %s, real line %s, %s' , $breakpoint_descriptor -> {path }, $real_line ,
1229
1227
$perl_source_lines -> [$real_line ] if $_dev_mode && $_debug_breakpoints;
1230
1228
1231
- if (! defined $perl_source_lines -> [ $real_line ] || $perl_source_lines -> [ $real_line ] == 0)
1232
- {
1233
- _send_event( " BREAKPOINT_DENIED " , $event_data );
1234
- return 1 ;
1229
+ $breakpoint_descriptor -> { _processed } = 1;
1230
+
1231
+ if (! defined $perl_source_lines -> [ $real_line ] || $perl_source_lines -> [ $real_line ] == 0) {
1232
+ _send_event( " BREAKPOINT_DENIED " , $event_data ) ;
1235
1233
}
1236
- else
1237
- {
1234
+ else {
1238
1235
$perl_breakpoints_map -> {$real_line } = $breakpoint_descriptor ;
1239
- _send_event( " BREAKPOINT_SET" , $event_data ) unless $breakpoint_descriptor -> {run_to_cursor };
1240
- return 1;
1236
+ _send_event(" BREAKPOINT_SET" , $event_data ) unless $breakpoint_descriptor -> {run_to_cursor };
1241
1237
}
1242
1238
}
1243
1239
@@ -1369,26 +1365,33 @@ sub _set_break_points_for_files
1369
1365
my $old_context = _switch_context( $perl_file_id );
1370
1366
$default_context //= $old_context ;
1371
1367
1372
- # print STDERR "Attempting to set breakpoints for $real_path\n";
1373
1368
my @lines = keys %{$loaded_breakpoints_descriptors };
1374
1369
my $breakpoints_left = scalar @lines ;
1375
1370
1376
- foreach my $real_line (@lines )
1377
- {
1371
+ foreach my $real_line (@lines ) {
1378
1372
my $breakpoint_descriptor = $loaded_breakpoints_descriptors -> {$real_line };
1379
- _report " Processing descriptor %s , %s , %s " , @{$breakpoint_descriptor }{qw/ path line remove/ } if $_dev_mode;
1380
1373
1381
- next if $real_line > $# $perl_source_lines ; # compiled incompletely
1374
+ if (exists $breakpoint_descriptor -> {_processed }) {
1375
+ $breakpoints_left --;
1376
+ _report " Breakpoint is already set: %s , %s , %s " ,
1377
+ @{$breakpoint_descriptor }{qw/ path line remove/ } if $_dev_mode;
1378
+ next ;
1379
+ }
1382
1380
1383
- if ($breakpoint_descriptor -> {remove })
1384
- {
1385
- $breakpoints_left -= _reset_breakpoint( $breakpoint_descriptor , $real_line , $perl_breakpoints_map );
1381
+ if ($real_line > $# $perl_source_lines ) {
1382
+ _report " Skip breakpoint setting, file seems not completely compiled. Breakpoint: %s , %s , %s , script lines: %s " ,
1383
+ @{$breakpoint_descriptor }{qw/ path line remove/ }, $# $perl_source_lines if $_dev_mode;
1384
+ next ;
1386
1385
}
1387
- else
1388
- {
1389
- $breakpoints_left -= _set_breakpoint( $breakpoint_descriptor , $real_line , $perl_breakpoints_map ,
1390
- $perl_source_lines );
1386
+ _report " Processing descriptor %s , %s , %s " , @{$breakpoint_descriptor }{qw/ path line remove/ } if $_dev_mode;
1387
+
1388
+ if ($breakpoint_descriptor -> {remove }) {
1389
+ _reset_breakpoint($breakpoint_descriptor , $real_line , $perl_breakpoints_map );
1390
+ }
1391
+ else {
1392
+ _set_breakpoint($breakpoint_descriptor , $real_line , $perl_breakpoints_map , $perl_source_lines );
1391
1393
}
1394
+ $breakpoints_left --;
1392
1395
}
1393
1396
1394
1397
delete $_queued_breakpoints_files{$real_path } unless $breakpoints_left ;
0 commit comments