Warum funktioniert strace nicht bei gcc -c?

543
user461984
>echo > foobar.c >strace gcc -c foobar.c 2>&1 | grep foobar.o > 

(nichts) - foobar.owird offensichtlich geschrieben, aber auf strace sehe ich es nicht. Warum?

2

1 Antwort auf die Frage

1
Deltik

Dies liegt daran, dass gccUnterprozesse erstellt werden und straceSubprozesse nur dann betrachtet werden, wenn Sie das -ffFlag angeben .

Siehe strace -ffFlag in Aktion in diesem Beispiel:

deltik@workstation [~/Desktop]# echo > foobar.c deltik@workstation [~/Desktop]# strace -ff gcc -c foobar.c 2>&1 | grep foobar.o [pid 14220] execve("/usr/local/sbin/as", ["as", "--64", "-o", "foobar.o", "/tmp/ccJhzHTZ.s"], [/* 66 vars */]) = -1 ENOENT (No such file or directory) [pid 14220] execve("/usr/local/bin/as", ["as", "--64", "-o", "foobar.o", "/tmp/ccJhzHTZ.s"], [/* 66 vars */]) = -1 ENOENT (No such file or directory) [pid 14220] execve("/usr/sbin/as", ["as", "--64", "-o", "foobar.o", "/tmp/ccJhzHTZ.s"], [/* 66 vars */]) = -1 ENOENT (No such file or directory) [pid 14220] execve("/usr/bin/as", ["as", "--64", "-o", "foobar.o", "/tmp/ccJhzHTZ.s"], [/* 66 vars */] <unfinished ...> [pid 14220] stat("foobar.o", 0x7ffed65b3850) = -1 ENOENT (No such file or directory) [pid 14220] open("foobar.o", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3