根據手冊頁,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) +++
現在相同的代碼上的httpd不起作用:
# ltrace -e strcpy /usr/sbin/httpd -t >/dev/null
Syntax OK
+++ exited (status 0) +++
號庫電話是追根溯源,雖然我們可以確認的strcpy是用gdb叫:
# 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
我對費奧多爾執行此17.這是一個追蹤錯誤還是預期的行爲?
我的Linux手冊頁在BUGS部分有這個選項-f有時無法跟蹤一些孩子。 –