Process
調試一個立即失敗/從未出現的子程序
我有一個可執行的二進製文件(它是一個設備驅動程序)。它執行並立即以成功的 0 返回碼退出。在一台電腦上,它創建了我可以用 pgrep 看到的所有重要的子程序,但遺憾的是在我的另一台電腦上沒有。執行它的輸出
strace
結束:clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f2851597310) = 32167 exit_group(0) = ? +++ exited with 0 +++
但是在那台電腦上找不到程序(在本例中為 32167)。
我不知道如何弄清楚出了什麼問題。
sudo execsnoop -x
跑步對孩子沒有任何影響。原始碼不可用。(不是主要目標,但如果它不複製,而只是在前台執行所有內容,那就太好了。)如果有幫助,就是這個文件:https ://github.com/elmadjian/tobii_4C_for_linux/blob/main/tobii_usb_service /usr/local/sbin/tobiiusbserviced編輯:
strace -f command
輸出結束:23747 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f789577f310) = 23748 23747 exit_group(0) = ? 23748 umask(000) = 022 23748 setsid( <unfinished ...> 23747 +++ exited with 0 +++ 23748 <... setsid resumed>) = 23748 23748 brk(NULL) = 0x21bd000 23748 brk(0x21de000) = 0x21de000 23748 openat(AT_FDCWD, "/var/run/tobiiusb/tobiiusbservice.pid", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory) 23748 openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3 23748 fstat(3, {st_mode=S_IFREG|0644, st_size=3648, ...}) = 0 23748 fstat(3, {st_mode=S_IFREG|0644, st_size=3648, ...}) = 0 23748 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 3648 23748 lseek(3, -2321, SEEK_CUR) = 1327 23748 read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 2321 23748 close(3) = 0 23748 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 23748 connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 ENOENT (No such file or directory) 23748 close(3) = 0 23748 exit_group(1) = ? 23748 +++ exited with 1 +++
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 ENOENT (No such file or directory)
它想寫入系統日誌,它失去了。你的系統有問題,這個文件
/dev/log
通常應該存在。