[PATCHv13 0/6] thread-specific breakpoints in just some inferiors
Andrew Burgess
aburgess@redhat.com
Fri Sep 6 09:10:57 GMT 2024
I'm planning to merge the rest of this series once my testing has
completed unless someone asks me not too. Obviously I'll address
anything that crops up after committing.
---
In v13:
- Rebased to current HEAD of master. Resolved some minor merge
conflicts in breakpoint.{c,h} for the last patch, and updated the
patch to take account of catchpoint::re_set() which was added
recently.
- Moved the NEWS entries now that GDB 15 has been released.
In v12:
- First 3 patches from previous version have now been merged,
- Rebased to current master and retested. Few minor testsuite
changes to account for other changes in the master branch, nothing
major though.
In v11:
- Rebased on to current upstream master. No significant merge
issues found. Retested, no issues found.
In v10:
- I merged the first 5 patches. These were mostly just adding extra
asserts, or minor refactoring and cleanup that didn't change GDB's
behaviour. Patch #2 did have a minor behaviour change, but this
was just removing some (I think) unintended behaviour,
- Rebased onto current upstream/master branch,
- No other changes since v9.
In v9:
- Rebased onto current upstream/master branch,
- Minor testsuite fix to account for updated output from GDB,
- No other changes since v8.
In v8:
- Rebased onto current upstream/master branch.
- Reordered the patches a little. Patches 0 to 8 are unchanged from
previous. If there's no objections then I'm planning to merge
these some point soon as I think these are all good cleanup patches.
- Patches 9, 10, and 11 are new. These are also refactoring
commits, but are all tied pretty tightly to what is now patch 12.
- Patch 12 is the most important patch. This has had a complete
rewrite since V7 in order to address Tom's feedback. The general
idea is unchanged; the breakpoint condition string is parsed first
forwards, and then backwards, but we now have a two phase
analysis, rather than immediately parsing things like the
thread-id as we find them. This resolves this problem:
(gdb) break some_function if ( 3 == thread )
Previous GDB would try to match 'thread )' as a thread-id and give
an error that ')' as invalid. Now GDB correctly understands that
the 'thread )' is likely part of the 'if' condition, and parses it
as such.
- Patches 13 and 14 are unchanged from V7. These patches depend on
the changes in patch 12 so can't be merged without that patch.
In v7:
- Addressed all the issues except one that Baris pointed out, this
includes typos, some minor testsuite cleanups, and reformatting an
assert (but not changing the meaning).
- As requested, switched to use std::string_view in
break-parse-cond.c file instead of a custom class, I agree that
this is an improvement.
- I've not changed the handling of -force-condition flag. I replied
to the review email with my thoughts, TLDR: fixing this would be a
bigger task which I'd rather leave for ... the future.
- Rebased and retested.
In v6:
- Rebased to current master, one minor fix due to the C++17 changes,
nothing major. Retested.
In v5:
- Updates after Lancelot's feedback, including, -force-condition can
no longer be abbreviated to '-', and can't be used immediately
after the breakpoint condition.
- More tests to check some of the edge cases.
In v4:
- Big update, this series now handles thread-specific and
inferior-specific breakpoints.
In v3:
- Rebased on to current upstream/master, this includes all Simon's
recent breakpoint changes. Retested with no regressions seen.
In v2:
- Rebased on current upstream/master and retested,
- No changes to code or docs.
---
Andrew Burgess (6):
gdb: make breakpoint_debug_printf global
gdb: add another overload of startswith
gdb: create new is_thread_id helper function
gdb: parse pending breakpoint thread/task immediately
gdb: don't set breakpoint::pspace in create_breakpoint
gdb: only insert thread-specific breakpoints in the relevant inferior
gdb/Makefile.in | 2 +
gdb/NEWS | 11 +
gdb/ada-lang.c | 6 +-
gdb/break-catch-throw.c | 6 +-
gdb/break-cond-parse.c | 702 ++++++++++++++++++
gdb/break-cond-parse.h | 52 ++
gdb/breakpoint.c | 671 ++++++++---------
gdb/breakpoint.h | 63 +-
gdb/testsuite/gdb.ada/tasks.exp | 6 +-
gdb/testsuite/gdb.base/condbreak.exp | 57 +-
gdb/testsuite/gdb.base/pending.exp | 30 +-
gdb/testsuite/gdb.linespec/explicit.exp | 14 +-
gdb/testsuite/gdb.linespec/keywords.exp | 8 +-
gdb/testsuite/gdb.mi/mi-dprintf-pending.exp | 3 +-
gdb/testsuite/gdb.mi/new-ui-bp-deleted.exp | 8 +-
.../gdb.mi/user-selected-context-sync.exp | 14 +-
.../gdb.multi/bp-thread-specific.exp | 7 +-
.../gdb.multi/inferior-specific-bp.exp | 16 +-
.../gdb.multi/multi-target-continue.exp | 2 +-
.../gdb.multi/multi-target-ping-pong-next.exp | 4 +-
.../gdb.multi/pending-bp-del-inferior.c | 28 +
.../gdb.multi/pending-bp-del-inferior.exp | 214 ++++++
gdb/testsuite/gdb.multi/pending-bp.exp | 206 +++++
gdb/testsuite/gdb.multi/tids.exp | 6 +-
.../gdb.threads/del-pending-thread-bp-lib.c | 22 +
.../gdb.threads/del-pending-thread-bp.c | 85 +++
.../gdb.threads/del-pending-thread-bp.exp | 98 +++
gdb/tid-parse.c | 82 +-
gdb/tid-parse.h | 8 +
gdbsupport/common-utils.h | 10 +
30 files changed, 1994 insertions(+), 447 deletions(-)
create mode 100644 gdb/break-cond-parse.c
create mode 100644 gdb/break-cond-parse.h
create mode 100644 gdb/testsuite/gdb.multi/pending-bp-del-inferior.c
create mode 100644 gdb/testsuite/gdb.multi/pending-bp-del-inferior.exp
create mode 100644 gdb/testsuite/gdb.threads/del-pending-thread-bp-lib.c
create mode 100644 gdb/testsuite/gdb.threads/del-pending-thread-bp.c
create mode 100644 gdb/testsuite/gdb.threads/del-pending-thread-bp.exp
base-commit: 237df762d73a7fdf910277b0644df58688d2d87a
--
2.25.4
More information about the Gdb-patches
mailing list