Системный вызов трассировки скрипта Python с помощью dtruss на Mac OSX - PullRequest
0 голосов
/ 05 ноября 2019

Я заметил, что что-то не так с dtruss при применении к скрипту Python. Затем я обнаружил, что даже самая простая программа на Python, такая как

print ("HELLO")

, неправильно прослеживается под dtruss в MacOS. Я не могу найти системный вызов write, однако на компьютере с Linux он успешно отслеживается (с использованием strace). Ниже я прилагаю след, созданный dtruss. Нужно ли передавать некоторые дополнительные параметры или, возможно, использовать какой-либо другой инструмент для трассировки Python? Как питон может «тайно» выполнять системные вызовы, не будучи захваченным dtruss?

$ sudo dtruss -f python3 hello.py

    PID/THRD  SYSCALL(args)          = return
98717/0xb7bbdd:  madvise(0x10B712000, 0x3000, 0x5)       = 0 0
98717/0xb7bbdd:  open("/dev/dtracehelper\0", 0x2, 0x7FFF546FB850)        = 3 0
98717/0xb7bbdd:  ioctl(0x3, 0x80086804, 0x7FFF546FB7D8)      = 0 0
98717/0xb7bbdd:  close(0x3)      = 0 0
98717/0xb7bbdd:  thread_selfid(0x3, 0x80086804, 0x7FFF546FB7D8)      = 12041181 0
98717/0xb7bbdd:  bsdthread_register(0x7FFF99AD8080, 0x7FFF99AD8070, 0x2000)      = 1073741919 0
98717/0xb7bbdd:  ulock_wake(0x1, 0x7FFF546FAE2C, 0x0)        = -1 Err#2
98717/0xb7bbdd:  issetugid(0x1, 0x7FFF546FAE2C, 0x0)         = 0 0
98717/0xb7bbdd:  mprotect(0x10B76D000, 0x88, 0x1)        = 0 0
... (more mprotect)
98717/0xb7bbdd:  getpid(0x10B76D000, 0x88, 0x1)      = 98717 0
98717/0xb7bbdd:  stat64("/AppleInternal/XBS/.isChrooted\0", 0x7FFF546FACE8, 0x1)         = -1 Err#2
98717/0xb7bbdd:  stat64("/AppleInternal\0", 0x7FFF546FAD80, 0x1)         = -1 Err#2
98717/0xb7bbdd:  csops(0x1819D, 0x7, 0x7FFF546FA810)         = -1 Err#22
98717/0xb7bbdd:  sysctl([CTL_KERN, 14, 1, 98717, 0, 0] (4), 0x7FFF546FA968, 0x7FFF546FA960, 0x0, 0x0)        = 0 0
98717/0xb7bbdd:  ulock_wake(0x1, 0x7FFF546FAD90, 0x0)        = -1 Err#2
98717/0xb7bbdd:  csops(0x1819D, 0x7, 0x7FFF546FA0F0)         = -1 Err#22
98717/0xb7bbdd:  getuid(0x1819D, 0x7, 0x7FFF546FA0F0)        = 0 0
98717/0xb7bbdd:  getuid(0x1819D, 0x7, 0x7FFF546FA0F0)        = 0 0
98717/0xb7bbdd:  stat64("/\0", 0x7FFF546FAD20, 0x7FFF546FA0F0)       = 0 0
98717/0xb7bbdd:  getattrlist("/usr\0", 0x7FFF9997CB04, 0x7FFF546FC630)       = 0 0
98717/0xb7bbdd:  getattrlist("/usr/local\0", 0x7FFF9997CB04, 0x7FFF546FC630)         = 0 0
98717/0xb7bbdd:  getattrlist("/usr/local/bin\0", 0x7FFF9997CB04, 0x7FFF546FC630)         = 0 0

...