是否有一种“低级”方法来确定进程正在调用哪些系统调用?

是否有一种“低级”方法来确定进程正在调用哪些系统调用?

我有一个冻结的二进制文件,而该二进制文件恰好是我的包管理器,阻止我安装任何新包。

在 gdb 下运行,当进程冻结时我可以得到回溯,我得到:

#0  0xb6cd9abc in syscall () from /lib/libc.so.6                                                                                                                                                                  
#1  0xb60a99b0 in startParsing () from /usr/lib/libexpat.so.1

所以看起来 expat 正在执行一个永远不会返回的系统调用。

有没有一种“低级”方法可以让我了解有关该系统调用的更多信息?我想安装 strace,但由于这是我的包管理器失败,我无法轻松地将 strace 安装到机器上。

CPU是arm的,这使得下载现成的二进制文件稍微复杂一些。

答案1

假设您安装了 strace:

strace /path/to/binary

编辑:我没有读到最后一点,它说你没有 strace,你应该能够下载 strace tarball 并在不使用包管理器的情况下构建它。如果您没有安装构建工具,您可以在另一台计算机上静态构建它并复制它。

相关内容