2016-09-15 38 views
5

proces Pythona wisi w futex():Zobacz StackTrace wiszące Python w futex (... FUTEX_WAIT_BITSET_PRIVATE | ...)

[email protected]:~# strace -p 9042 
strace: Process 9042 attached 
futex(0x1e61900, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, ffffffff 

Chcę zobaczyć StackTrace Jeśli proces zawieszania.

Niestety ctrl-c nie działa :-(

Jak widzę StackTrace jeśli Python zawiesza się w ten sposób?

+0

Wystarczy dołączyć gdb do procesu, lub uruchomić pstack jeśli masz go zainstalowanego. Lub "zabij -SEGV" proces i zbadaj rdzeń, jeśli nie musisz go utrzymywać przy życiu. – Useless

+0

@Useless Chcę zobaczyć stacktrace kodu Pythona. Nie jest to stacktrace interpretera Pythona (kod c). Spojrzałem na pstack, AFAIK pstack drukuje to drugie. – guettli

Odpowiedz

4
  1. zainstalować rozszerzenia gdb Pythona jeśli potrzebne dla danego systemu (zob here dla przykładem, albo spojrzeć na dokumentacji distro)
  2. dołączyć gdb do zawieszonego procesu
  3. run

    (gdb) py-bt 
    

    zamiast zwykłej bt uzyskać Python ślad

+0

Po wykonaniu komend 'ln -s ...' z innej odpowiedzi i uruchomieniu gdb jako root działało. Oto inna odpowiedź: http://stackoverflow.com/a/30430059/633961 – guettli