[PATCH v3 1/3] Existing -z option prints only successful syscalls. This patch adds a -Z option to print only failing syscalls.

Paul Chaignon paul.chaignon at gmail.com
Sun May 12 18:18:11 UTC 2019


On Thu, Apr 25, 2019 at 04:20PM, burkhard.kohl at intel.com wrote:
> From: Burkhard Kohl <burkhard.kohl at intel.com>
> 

The three commits of this patchset are missing a title as the first line.

> Signed-off-by: Burkhard Kohl <burkhard.kohl at intel.com>
> Co-Authored-by: Paul Chaignon <paul.chaignon at gmail.com>

Looks like a copy/paste error. It should be "@gmail.com".

> ---
>  defs.h    | 1 +
>  strace.c  | 7 ++++++-
>  syscall.c | 6 ++++--
>  3 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/defs.h b/defs.h
> index 88dad64d..b5ebb343 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -417,6 +417,7 @@ extern bool iflag;
>  extern bool count_wallclock;
>  extern unsigned int qflag;
>  extern bool not_failing_only;
> +extern bool failing_only;
>  extern unsigned int show_fd_path;
>  /* are we filtering traces based on paths? */
>  extern struct path_set {
> diff --git a/strace.c b/strace.c
> index ca8d558c..42cd1419 100644
> --- a/strace.c
> +++ b/strace.c
> @@ -111,6 +111,7 @@ static int post_attach_sigstop = TCB_IGNORE_ONE_SIGSTOP;
> 
>  /* Sometimes we want to print only succeeding syscalls. */
>  bool not_failing_only;
> +bool failing_only;
> 
>  /* Show path associated with fd arguments */
>  unsigned int show_fd_path;
> @@ -304,6 +305,7 @@ Miscellaneous:\n\
>   */
>  /* this is broken, so don't document it
>  -z -- print only succeeding syscalls\n\

It should say "successful" here.  Sorry, I introduced this typo.

> +-Z -- print only failing syscalls\n\
>   */
>  , DEFAULT_ACOLUMN, DEFAULT_STRLEN, DEFAULT_SORTBY);
>  	exit(0);
> @@ -1585,7 +1587,7 @@ init(int argc, char *argv[])
>  #ifdef ENABLE_STACKTRACE
>  	    "k"
>  #endif
> -	    "a:Ab:cCdDe:E:fFhiI:o:O:p:P:qrs:S:tTu:vVwxX:yz")) != EOF) {
> +	    "a:Ab:cCdDe:E:fFhiI:o:O:p:P:qrs:S:tTu:vVwxX:yzZ")) != EOF) {
>  		switch (c) {
>  		case 'a':
>  			acolumn = string_to_uint(optarg);
> @@ -1716,6 +1718,9 @@ init(int argc, char *argv[])
>  		case 'z':
>  			not_failing_only = 1;
>  			break;
> +		case 'Z':
> +			failing_only = 1;
> +			break;
>  		default:
>  			error_msg_and_help(NULL);
>  			break;
> diff --git a/syscall.c b/syscall.c
> index 5f95c2bd..949a848b 100644
> --- a/syscall.c
> +++ b/syscall.c
> @@ -761,8 +761,10 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
>  	 * whereas the intended result is that open(...) line
>  	 * is not shown at all.
>  	 */
> -		if (not_failing_only && tcp->u_error)
> -			return 0;	/* ignore failed syscalls */
> +		if ((not_failing_only && syserror(tcp)) ||
> +			(failing_only     && !syserror(tcp)))
> +			return 0;	/* ignore failed/successful
> +						 * syscalls */
>  		if (tcp->sys_func_rval & RVAL_DECODED)
>  			sys_res = tcp->sys_func_rval;
>  		else
> --
> 2.17.1
> 
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Gary Kershaw
> Chairperson of the Supervisory Board: Nicole Lau
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928
> 
> -- 
> Strace-devel mailing list
> Strace-devel at lists.strace.io
> https://lists.strace.io/mailman/listinfo/strace-devel


More information about the Strace-devel mailing list