[PATCH v4 1/3] Stop condition based on number of syscalls
Dmitry V. Levin
ldv at strace.io
Sat Mar 18 11:55:12 UTC 2023
Sorry for the long delay,
see more comments below.
On Sat, Mar 04, 2023 at 07:02:15PM +0530, Sahil Siddiq wrote:
> Add option to detach strace after capturing a specified
> number of syscalls.
I suggest changing the first line of the commit message
from "Stop condition based on number of syscalls"
to "Introduce -l/--syscall-limit option".
> * src/defs.h: Add syscall_limit variable.
* src/defs.h (syscall_limit): New variable declaration.
> * src/strace.c: Implementation of -l/--syscall-limit option.
This is too terse.
> * src/syscall.c: Move updation of syscall_limit here.
* src/syscall.c (syscall_exiting_trace): Update syscall_limit.
[...]
> --- a/src/strace.c
> +++ b/src/strace.c
> @@ -84,6 +84,7 @@ int Tflag_scale = 1000;
> int Tflag_width = 6;
> bool iflag;
> bool count_wallclock;
> +unsigned long long syscall_limit = -1ULL;
> static bool nflag;
> static int tflag_scale = 1000000000;
> static unsigned tflag_width = 0;
[...]
> @@ -2432,6 +2438,11 @@ init(int argc, char *argv[])
> "build of strace");
> #endif
> break;
> + case 'l':
> + syscall_limit = string_to_uint(optarg);
string_to_uint() returns int and therefore not suitable here,
let's use string_to_ulonglong() instead.
> + if (syscall_limit <= 0)
> + error_opt_arg(c, lopt, optarg);
Apparently, all our string_to_* primitives return signed integers,
this essentially means that syscall_limit has to be signed.
Please add a test line to tests/options-syntax.test
that would check that invalid -l arguments are rejected.
--
ldv
More information about the Strace-devel
mailing list