Czasami muszę uruchomić aplikację z terminala w celu debugowania. Jeśli jestem pewien, że błąd wystąpi wkrótce po uruchomieniu aplikacji, mogę uruchomić tę aplikację z poziomu terminalu.
Błędy pojawiają się jednak nieoczekiwanie, a potem tylko muszę monitorować błędną aplikację z terminala (aby zobaczyć jej dane wyjściowe).
Czy mogę wtedy odebrać aplikację z terminala, która nie została uruchomiona za pomocą terminala? Jeśli tak to jak?
command-line
process
debugging
Benzoes
źródło
źródło
~/.xsession-errors
jeśli zostały uruchomione za pośrednictwem GUI.Odpowiedzi:
Każdy proces w systemie Linux ma specjalny katalog
/proc/{pid}/fd/
. 0 oznacza standardowe, 1 oznacza standardowe, a 2 standardowe. Zakładając, że interesuje Cię tylko wyjście diagnostyczne, możesz określić proces pid, a następnie w terminalu wykonaj:aby zobaczyć standardowe wyjście:
zobaczyć stderr:
źródło
cat /proc/1840/fd/1
, wydaje się, że zwraca dane wyjściowe z innych procesów niż ten, który pobrałem. (1840 jest obecnie dla Skype według Monitora systemu) Pokazuje także wyjście innych programów ...: |Lub możesz użyć w
strace
ten sposóbźródło
Możesz dołączyć
gdb
do z uruchomionym procesem.Składnia jest następująca
Ok, nie widzisz kodu źródłowego, jeśli informacje debugowania są usuwane, co jest domyślnym ustawieniem dla wdrożonych aplikacji. Ale prawdopodobnie możesz zobaczyć stdout / stderr i komunikaty debuggera, awarie.
źródło
gdb program 1452
(próbowałem teżgdb 1452
), ale zwraca „1452: Brak takiego pliku lub katalogu”GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... 1840: No such file or directory.
gdb program pid
.gdb pid
Prawdopodobnie szukasz
retty
. Możesz także poszukać „załącz tty”. Zasadniczo odbywa się to za pomocą,ptrace
więc możesz nawet rzucić własne.źródło