ney*_*rec 26 command-line debugging process
有时我需要从终端运行应用程序进行调试。如果我确定在启动应用程序后不久会出现错误,我可以从终端运行此应用程序。
但是,错误会意外发生,然后我只需要从终端监视有错误的应用程序(以查看其输出)。
然后我可以从终端选择一个不是使用终端启动的应用程序吗?如果是这样怎么办?
Mic*_*jer 30
linux 中的每个进程都有一个特殊的目录/proc/{pid}/fd/。0 是标准输入,1 是标准输出,2 是标准错误。因此,假设您只对诊断输出感兴趣,您可以确定进程 pid,然后在终端中执行以下操作:
查看标准输出:
cat /proc/{pid of process}/fd/1
Run Code Online (Sandbox Code Playgroud)
查看标准错误:
cat /proc/{pid of process}/fd/2
Run Code Online (Sandbox Code Playgroud)
您可以附加gdb到正在运行的进程。
语法是
gdb program pid
Run Code Online (Sandbox Code Playgroud)
好的,如果调试信息被剥离,您将看不到源代码,这是已部署应用程序的默认设置。但是您可能会看到 stdout/stderr 和调试器消息、段错误。