Sometime I need to run an application from terminal for debugging. If I am sure the bug will occur short after launching the application, I can run this application from the Terminal.
However, bugs occur unexpectedly, and then only I need to monitor the buggy application from the Terminal (to see its output).
Can I then pick up an application from terminal, which was not launched using Terminal? If so how?
Each process in linux has a special directory
/proc/{pid}/fd/
. 0 is stdin, 1 is stdout and 2 is stderr. So, assuming you are only interested in diagnostic output you can determine the process pid, and then in the terminal do:to see stdout:
to see stderr:
Or you can use
strace
like thisYou can attach with
gdb
to a running process.The syntax is
Ok, you cannot see source code, if debug information are stripped, which is the default for deployed applications. But you can probably see stdout/stderr and debugger messages, segfaults.
You are likely looking for
retty
. You could also look for "attach tty". Basically it's done usingptrace
so you could even roll your own.