strace -p에는 컨텍스트/히스토리 줄 수가 포함됩니다.

strace -p에는 컨텍스트/히스토리 줄 수가 포함됩니다.

나는 strace실행 중인 프로세스를 원하고 그것으로 그렇게 할 수 있다는 것을 알고 있지만 strace -p <pid>프로세스가 sem_wait()게시되지 않은 세마포어 등과 같은 일부 차단 호출에 걸려 있고 의 출력은 strace단 한 줄입니다. 예를 들어 :

Process 195 attached - interrupt to quit
poll([{fd=3, events=POLLIN}, {fd=6, events=POLLIN}], 2, 3600000^C <unfinished ...>

strace더 많은 컨텍스트/기록 행을 출력하도록 지정할 수 있습니까 ? 라이브 출력과 각 기능/명령을 추측하고 있기 때문에 그렇지 않을 것 같지만 strace확인을 요청해야겠다고 생각했습니다.

답변1

gdb예를 들어, Attach to process를 사용하여 현재 스택을 볼 수도 있습니다. 이는 특히 디버깅 기호를 사용하여 프로그램을 컴파일한 경우 더 많은 정보를 얻을 수 있어 도움이 될 수 있습니다.

예를 들어, sleep백그라운드에서 실행하고 해당 pid를 가져온 다음 pid 및 대상 파일과 함께 gdb를 실행한 다음 bt역추적 명령을 실행합니다. 프로그램을 계속하려면 를 입력하십시오 detach.

$ sleep 999 & 
[1] 17340
$ gdb -p 17340 /bin/sleep 
Reading symbols from /bin/sleep...(no debugging symbols found)...done.
Attaching to program: /usr/bin/sleep, process 17340
Missing separate debuginfos, use: dnf debuginfo-install coreutils-8.24-8.fc23.x86_64
(gdb) bt
#0  0x00007fb84f43d510 in __nanosleep_nocancel () from /lib64/libc.so.6
#1  0x0000562be81da29f in rpl_nanosleep ()
#2  0x0000562be81da100 in xnanosleep ()
#3  0x0000562be81d7a1d in main ()
(gdb) detach
Detaching from program: /usr/bin/sleep, process 17340
(gdb) quit

답변2

당신 말이 맞아요, 역사가 없어요.

명확하지 않은 경우 출력에는 프로세스가 호출 중이며 poll파일 설명자 3과 6의 입력을 기다리는 것으로 표시됩니다. 실행하면 ls -l /proc/195/fd이러한 설명자가 무엇에 연결되어 있는지 표시되어야 합니다.

관련 정보