【问题标题】:How to determine what files a program is trying to open?如何确定程序试图打开哪些文件?
【发布时间】:2019-06-08 15:41:18
【问题描述】:

我有一个为 Linux 服务器编译的程序。它是用 FORTRAN 编写的,尽管我认为这与问题并不特别相关。

在某些时候,程序会吐出open: No such file or directory

然后终止。

问题是我不知道程序试图打开哪个文件/目录。

如果有某种程序,有点像ldd(但不完全是)可以运行以显示二进制可执行文件试图打开哪些文件,那就太好了。

这样的事情存在吗?如果没有,有没有办法从 Linux 内核中获取这些信息?

【问题讨论】:

  • 这是用户态应用程序还是内核驱动程序?您标记了内核,但听起来您在询问用户空间。显而易见,您应该在程序中提供有意义的错误消息。

标签: linux file debugging executable


【解决方案1】:

man strace

在你的情况下strace -e openat $YOURPOGRAM

【讨论】:

    【解决方案2】:

    有一个叫做 strace 的程序可以做到这一点

    strace -f -e open <exe>

    https://linux-audit.com/monitor-file-access-by-linux-processes/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 2010-12-07
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多