文件存在却报错: no such file or directory ,记录下调试过程

查看 120|回复 8
作者:xuelang   
前段时间遇见了一个奇怪的问题,在执行二进制文件 protoc 的时候,报错 no such file or directory: ./protoc 。文件明明就在那里,可是一直报这个错,莫不是系统有 bug 了?
这里的二进制文件真实存在,检查权限也是对的,偏偏执行报错。第一次遇见这种问题,一时间都没有啥排查思路,这看起来就是根本不会发生的事。
大家可以先猜猜可能有哪些原因,以及如何验证?
在有 ChatGPT 之前,遇见解决不了的问题,就先去搜索引擎看看,搜索 no such file or directory but file exist ,有不少结果。这里第一个结果 No such file or directory? But the file exists! 比较匹配我的问题,在问题的高赞回答中,上来就给出了结论:可能是因为在不支持 32 位环境的 64 位机器中运行一个 32 位的二进制。具体到我的这个二进制文件,确实是从一个老的机器上拷到 64 位机器执行的。
不过为啥这样就报错?怎么知道是这个原因的? ChatGPT 在排查问题中究竟能发挥多大的作用?
完整内容在文章 ChatGPT 协助分析诡异的 no such file 问题

file, 二进制, such, Directory

kkk9   
看见 GPT 直接关掉。😓
lisxour   
linux 下,如果确认文件存在,基本都是位数导致的,linux 下这个提示很脑瘫。
guanzhangzhang   
file 下它,还有 ldd 它看看
alittlehj   
文件是不是你代码创建的?如果是 有没有可能是并发问题,多个线程访问同一个文件?上一个线程刚删除了 下一个线程又来读了。
xuelang
OP
  
@lisxour 这个提示确实很迷惑,不过也是因为底层 execve 返回的错误就这样,说的是找不到 ELF 链接器 文件
xuelang
OP
  
@guanzhangzhang 起始这个问题,应该是 strace 看调用,才能排查到。。
xuelang
OP
  
@alittlehj 哈哈,是我的错,没说清,这里查到原因了的,在博客有写的。
xuelang
OP
  
@kkk9 怕不是对 ChatGPT 有啥误解吧,建议你多用用
您需要登录后才可以回帖 登录 | 立即注册

返回顶部