Иногда мне нужно запустить приложение из терминала для отладки. Если я уверен, что ошибка возникнет вскоре после запуска приложения, я могу запустить это приложение из Терминала.
Однако ошибки возникают неожиданно, и тогда только мне нужно следить за ошибочным приложением из Терминала (чтобы увидеть его вывод).
Могу ли я забрать приложение из терминала, которое не было запущено с помощью терминала? Если так, то как?
command-line
process
debugging
Вениамин
источник
источник
~/.xsession-errors
если вы запустили его через графический интерфейс.Ответы:
Каждый процесс в Linux имеет специальный каталог
/proc/{pid}/fd/
. 0 - стандартный, 1 - стандартный, 2 - стандартный. Итак, предполагая, что вас интересует только диагностический вывод, вы можете определить pid процесса, а затем в терминале выполнить:чтобы увидеть стандартный вывод:
чтобы увидеть stderr:
источник
cat /proc/1840/fd/1
кажется, что он возвращает результаты других процессов, чем тот, который я выбрал. (1840 в настоящее время для Skype по данным системного монитора) Он также показывает результаты других программ ...: |Или вы можете использовать
strace
как этоисточник
Вы можете присоединиться
gdb
к запущенному процессу.Синтаксис
Хорошо, вы не можете увидеть исходный код, если отладочная информация удалена, что по умолчанию для развернутых приложений. Но вы, вероятно, можете увидеть сообщения stdout / stderr и отладчика, segfaults.
источник
gdb program 1452
(я тоже пробовалgdb 1452
), но он возвращает «1452: нет такого файла или каталога».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
Вы, вероятно, ищете
retty
. Вы также можете искать «прикрепить tty». В основном это сделано с помощью,ptrace
чтобы вы могли даже свернуть свой собственный.источник