Когда-то я должен запустить приложение от терминала для отладки. Если я уверен, что ошибка произойдет короткая после запуска приложения, я могу запустить это приложение от Терминала.
Однако ошибки неожиданно происходят, и затем только я должен контролировать ошибочное приложение от Терминала (для наблюдения его вывода).
Я могу затем поднять приложение с терминала, который не был запущен с помощью Терминала? Раз так, как?
Каждый процесс в Linux имеет специальный каталог /proc/{pid}/fd/
. 0 stdin, 1 stdout, и 2 stderr. Так, принятие Вас только интересуется диагностикой, производит Вас, может решить, что pid процесса, и затем в терминале делает:
видеть stdout:
cat /proc/{pid of process}/fd/1
видеть stderr:
cat /proc/{pid of process}/fd/2
Или можно использовать strace
как это
sudo strace -p $pid_of_the_process
Можно присоединить с gdb
к рабочему процессу.
Синтаксис
gdb program pid
Хорошо, Вы не видите исходный код, если отладочная информация разделяется, который является значением по умолчанию для развертываемых приложений. Но можно, вероятно, видеть stdout/stderr и сообщения отладчика, segfaults.
Вы, вероятно, ищете retty
. Вы могли также искать "присоединение tty". В основном это сделало использование ptrace
таким образом, Вы могли даже самокрутка.