Skip to content

Commit 6607228

Browse files
committedMar 5, 2023
#61 do not set same breakpoint multiple times
We are removing request for breakpoint removal but keeping requests for set. This caused multiple BREAKPOINT_SET events sent to IDE each time we are setting breakpoint with other breakpoints in the file.
1 parent cc9cb91 commit 6607228

File tree

2 files changed

+26
-22
lines changed

2 files changed

+26
-22
lines changed
 

‎Changes

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Revision history for Devel-Camelcadedb
22

33
2023.1
4+
Fixed spammy `BREAKPOINT_SET` events sent to the IDE, 61
45
Introduced `CAMELCADEDB_DEV_MODE` environment variable to enable dev mode with verbose output, #61
56

67
2021.2

‎lib/Devel/Camelcadedb.pm

+25-22
Original file line numberDiff line numberDiff line change
@@ -1204,8 +1204,6 @@ sub _reset_breakpoint
12041204
{
12051205
$perl_breakpoints_map->{$real_line} = 0;
12061206
}
1207-
1208-
return 1;
12091207
}
12101208

12111209
sub _set_run_to_cursor_breakpoint
@@ -1228,16 +1226,14 @@ sub _set_breakpoint
12281226
_report 'Setting breakpoint to %s, real line %s, %s', $breakpoint_descriptor->{path}, $real_line,
12291227
$perl_source_lines->[$real_line] if $_dev_mode && $_debug_breakpoints;
12301228

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);
12351233
}
1236-
else
1237-
{
1234+
else {
12381235
$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};
12411237
}
12421238
}
12431239

@@ -1369,26 +1365,33 @@ sub _set_break_points_for_files
13691365
my $old_context = _switch_context( $perl_file_id );
13701366
$default_context //= $old_context;
13711367

1372-
# print STDERR "Attempting to set breakpoints for $real_path\n";
13731368
my @lines = keys %{$loaded_breakpoints_descriptors};
13741369
my $breakpoints_left = scalar @lines;
13751370

1376-
foreach my $real_line (@lines)
1377-
{
1371+
foreach my $real_line (@lines) {
13781372
my $breakpoint_descriptor = $loaded_breakpoints_descriptors->{$real_line};
1379-
_report "Processing descriptor %s, %s, %s", @{$breakpoint_descriptor}{qw/path line remove/} if $_dev_mode;
13801373

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+
}
13821380

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;
13861385
}
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);
13911393
}
1394+
$breakpoints_left--;
13921395
}
13931396

13941397
delete $_queued_breakpoints_files{$real_path} unless $breakpoints_left;

0 commit comments

Comments
 (0)
Please sign in to comment.