[Patch]Fix the args' output of syscall execve
Cai Fei
caifei@cn.fujitsu.com
Mon Aug 20 05:12:00 GMT 2007
Hi,
Martin Hunt wrote:
> On Thu, 2007-08-16 at 10:00 -0400, Frank Ch. Eigler wrote:
>
>> Martin Hunt <hunt@redhat.com> writes:
>>
>> strace -f sh -c ls |& grep exec
>> execve("/bin/sh", ["sh", "-c", "ls"], [/* 53 vars */]) = 0
>> execve("/bin/ls", ["ls"...], [/* 52 vars */]) = 0
>>
>
> Looks OK for trivial cases, but compare
>
> strace way:
>
> [pid 11943] execve("/usr/bin/g++", ["g++"..., "-DHAVE_CONFIG_H"...,
> "-I."..., "-I."..., "-I."..., "-DBINDIR=\"/usr/local/bin\""...,
> "-DPKGDATADIR=\"/usr/local/share/s"..., "-DPKGLIBDIR=
> \"/usr/local/libexec/"..., "-Wall"..., "-Wextra"..., "-Werror"...,
> "-g"..., "-O2"..., "-MT"..., "stap-staptree.o"..., "-MD"..., ...], [/*
> 43 vars */]) = 0
>
> [pid 11944] execve("/usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1plus",
> ["/usr/libexec/gcc/i386-redhat-lin"..., "-quiet"..., "-I."..., "-I."...,
> "-I."..., "-MD"..., "stap-staptree.d"..., "-MF"...,
> ".deps/stap-staptree.Tpo"..., "-MP"..., "-MT"..., "stap-staptree.o"...,
> "-MQ"..., "stap-staptree.o"..., "-D_GNU_SOURCE"...,
> "-DHAVE_CONFIG_H"..., ...], [/* 45 vars */]) = 0
>
>
> systemtap script:
>
> [pid 12965] /usr/bin/g++ -DHAVE_CONFIG_H -I. -I. -I.
> -DBINDIR="/usr/local/bin" -DPKGDATADIR="/usr/local/share/systemtap"
> -DPKGLIBDIR="/usr/local/libexec/systemtap" -Wall -Wextra -Werror -g -O2
> -MT stap-parse.o -MD -MP -MF .deps/stap-parse.Tpo -c -o stap-parse.o
> parse.cxx
>
> [pid 12966] /usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1plus -quiet -I.
> -I. -I. -MD stap-parse.d -MF .deps/stap-parse.Tpo -MP -MT stap-parse.o
> -MQ stap-parse.o -D_GNU_SOURCE -DHAVE_CONFIG_H -DBINDIR="/usr/local/bin"
> -DPKGDATADIR="/usr/local/share/systemtap"
> -DPKGLIBDIR="/usr/local/libexec/systemtap" parse.cxx -quiet -dumpbase
> parse.cxx -mtune=generic -auxbase-strip stap-parse.o -g -O2 -Wall
> -Wextra -Werror -o /tmp/ccUmZrhr.s
I read the new syscalls.stp and aux_syscalls.stp.
The argv[0]'th entry is usually the path name, but for various reasons
the invoker may want to override that.
In this kind of situation, if the invoker uses args but not argstr for
tracing that, he will not get the message.
More information about the Systemtap
mailing list