Em algum momento eu preciso executar um aplicativo do terminal para depuração. Se tenho certeza de que o bug ocorrerá rapidamente após o lançamento do aplicativo, posso executá-lo no Terminal.
No entanto, os erros ocorrem inesperadamente, e somente eu preciso monitorar o aplicativo com bugs do Terminal (para ver sua saída).
Posso então pegar um aplicativo no terminal, que não foi iniciado usando o Terminal? Se sim, como?
command-line
process
debugging
Benjamin
fonte
fonte
~/.xsession-errors
se você a ativou via GUI.Respostas:
Cada processo no linux possui um diretório especial
/proc/{pid}/fd/
. 0 é stdin, 1 é stdout e 2 é stderr. Portanto, supondo que você esteja interessado apenas na saída de diagnóstico, você pode determinar o processo pid e, em seguida, no terminal:para ver stdout:
para ver stderr:
fonte
cat /proc/1840/fd/1
parece retornar a saída de outros processos que não o que eu peguei. (Atualmente, o 1840 é para o Skype, de acordo com o System Monitor). Também mostra a saída de outros programas ...: |Ou você pode usar
strace
assimfonte
Você pode se conectar
gdb
a um processo em execução.A sintaxe é
Ok, você não pode ver o código-fonte, se as informações de depuração forem removidas, que é o padrão para aplicativos implantados. Mas você provavelmente pode ver as mensagens stdout / stderr e depurador, segfaults.
fonte
gdb program 1452
(também tenteigdb 1452
), mas ele retorna "1452: Não existe esse arquivo ou diretório".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
. Eu acho que a saída que você mostra é degdb pid
Você provavelmente está procurando
retty
. Você também pode procurar por "anexar tty". Basicamente, é feito usando-optrace
para que você possa rodar o seu próprio.fonte