[PATCH v4 2/2] gdb/breakpoint: add flags to 'condition' and 'break' commands to force condition
Pedro Alves
pedro@palves.net
Thu Oct 29 17:30:23 GMT 2020
On 10/13/20 1:25 PM, Tankut Baris Aktemur via Gdb-patches wrote:
> @@ -9192,10 +9207,25 @@ find_condition_and_thread (const char *tok, CORE_ADDR pc,
> if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
> {
> tok = cond_start = end_tok + 1;
> - parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
> + try
> + {
> + parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
> + }
> + catch (const gdb_exception_error &)
> + {
> + if (!force)
> + throw;
> + else
> + tok = tok + strlen (tok);
> + }
> cond_end = tok;
> *cond_string = savestring (cond_start, cond_end - cond_start);
> }
> + else if (toklen >= 1 && strncmp (tok, "-force-condition", toklen) == 0)
> + {
> + tok = cond_start = end_tok + 1;
> + force = true;
> + }
> else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
> {
> const char *tmptok;
Is it important to handle "-force-condition" in this position, as opposed
to making it another option handled by string_to_explicit_location ?
As is, this doesn't work, for example:
(gdb) b -function main -force<TAB>
nor does:
(gdb) b -force-condition main if 0
invalid explicit location argument, "-force-condition"
IMO, ideally all '-' options would be handled in the same place.
At some point, I think it would be nice to convert the
"break" command to use gdb::option, but it isn't trivial.
More information about the Gdb-patches
mailing list