맨 페이지에 따르면 ltrace는 실행 된 프로세스에서 동적 라이브러리 호출을 가로 채고 기록하기로되어 있지만 일부 바이너리에서는 제대로 작동하지 않는 것으로 보입니다.ltrace가 일부 바이너리에서는 작동하지 않습니다
다음은 strcpy를 추적하는 동안 문제를 재현하는 방법입니다. 내가 처음 그 명령은 ltrace를 참조
은 (여기 wget을) 일부 바이너리에서 작동 할 수 있습니다 :
# ltrace -e strcpy wget --help >/dev/null
strcpy(0x63cc23, "auth-no-challenge") = 0x63cc23
strcpy(0x63cc38, "background") = 0x63cc38
[...]
strcpy(0x63cf26, "verbose") = 0x63cf26
strcpy(0x63cf31, "verbose") = 0x63cf31
+++ exited (status 0) +++
이제 아파치에서 작동하지 않습니다 같은 코드 : 없음 라이브러리 호출이 없었다
# ltrace -e strcpy /usr/sbin/httpd -t >/dev/null
Syntax OK
+++ exited (status 0) +++
# gdb --quiet --args /usr/sbin/httpd -t
Reading symbols from /usr/sbin/httpd...(no debugging symbols found)...done.
(gdb) b strcpy
Breakpoint 1 at 0x15d08
(gdb) r
Starting program: /usr/sbin/httpd -t
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaad1b000
[Thread debugging using libthread_db enabled]
Breakpoint 1, 0x00002aaaaca4d610 in strcpy() from /lib64/libc.so.6
내가 표도르에서이 작업을 수행 해요 : 우리가 strcpy를이 GDB를 사용하여 호출됩니다 확인할 수 있지만, 추적 a 17. 이것은 ltrace 버그 또는 예상되는 동작입니까?
내 리눅스 매뉴얼 페이지는 버그 부분에 있습니다 :'-f 옵션은 때때로 아이들을 추적하지 못합니다 .' –