这个问题对我来说听起来很愚蠢,但如果这在某种程度上可行,那将会非常有帮助。
我的应用程序崩溃,我需要调试它。我通过SSH(它是一个HTTP服务器)在另一台计算机上运行这个应用程序。如果我可以让终端一直通过GDB和SSH运行应用程序,我就能找到错误。但我没有一台免费的电脑来做这件事。我能做什么?有没有办法用nohup(1)
加&>
和类似的东西启动GDB,所以我可以稍后看到GDB输出(where
命令)?
答案 0 :(得分:2)
一个名为screen
的经典Unix程序是您的朋友(或其竞争对手tmux
)。它允许在多个登录中保持虚拟控制台打开:
screen
开始这样的会话;使用你可以脱离它;使用
screen -r
您可以稍后重新连接。
然而,你甚至不需要那样做;只是让程序在崩溃时离开核心转储; ulimit -c unlimited
说"每个崩溃的程序都会留下核心转储&#34 ;;然后,您可以稍后使用gdb打开核心转储,一切就像在崩溃时在gdb中运行程序一样。
gdb core.123456