我在Linux机器上安装了一个软件包。当我运行安装的二进制文件时,它会挂起:
$installedBinary --help
应该返回命令行选项列表。而是,程序挂起并且不响应。当我运行control + c时,它将关闭。
如何调查此问题?
答案 0 :(得分:4)
从strace -ffo traces ./installedBinary --help
开始。然后检查traces.*
日志文件,尤其是最后一行可能显示其被阻止内容的行。参见strace(1)
您也可以从htop开始。找到被阻止的线程,然后按s
表示strace
,按l
表示lsof
。
答案 1 :(得分:0)
Maxim Egorushkin's answer是不错的选择。但是在Linux上,大多数程序都有一些文档(通常至少有一个man
页,请参见man(1)和man(7)),并且大多数程序是免费软件。而且文档应该比--help
提供更多信息(--help
的输出是文档的简短 summary ;例如,sed(1)解释了 lot 个多于sed --help
)。也许您的程序的行为已在文档中进行了说明(例如,取决于某些环境变量)。
因此,您还应该阅读installedBinary
的文档,您可能可以获取其源代码,进行研究和重新编译。如果您拥有源代码并已构建它,则通常可以使用DWARF调试信息进行编译(例如,将-g
添加到CFLAGS
中的某些Makefile
中...)和gdb
下的run it
请注意,即使在Linux上,您也可能拥有malware(例如,对于Debian或Ubuntu,您可能已经找到了.deb
来源,用于发布恶意软件;这不太可能,但并非不可能)。信任二进制包提供者是一个社会问题,而不是技术问题。您的installedBinary
(原则上)可能足以使您陷入困境。但这可能是一些executable。
也许您的installedBinary
总是 在等待其标准输入(这种行为可能是不寻常的,但不是被禁止的)或来自其他来源的某些输入。然后,您可以尝试installedBinary < /dev/null
甚至installedBinary --help < /dev/null