这是非常奇怪的行为,我在使用Cygwin时从来没有遇到过类似的事情。我没有足够的声誉点来使用评论来询问信息,因此我将发布我将使用的调试技术。希望它们对任何有类似问题的人都有用。
首先,我尝试验证我是否正在运行正确的可执行文件。运行find --version
应该返回如下内容:
find(GNU findutils)4.5.11
由Cygwin打包(4.5.11-1)
如果我仍然没有得到任何输出,我会(安装并)使用Cygwin的strace
命令:
mkdir testdir
strace -o find.out find testdir
rmdir testdir
strace
允许您查看Cygwin可执行文件对Cygwin DLL的调用。使用上面的命令,find命令的输出存储在
find.out
。
除非您熟悉Windows系统编程,否则大部分内容都没有意义。但是,查看输出仍然可以让您了解命令正在执行的操作,例如,捕获传递给命令的Cygwin PATH和其他环境变量。我经常搜索open(
以查看命令(find)尝试使用的文件。成功调用open函数将显示如下:
open: open(/home/anthony/t, 0x30C000)
open: open(., 0x400000)
打开的unsucfulful调用返回-1的值。请注意,并非所有尝试打开的文件都是命令正常运行所必需的。这是一个这样一个不成功的尝试的例子(locale.alias
如果存在信息将被读取但是找不到它的工作):
open: -1 = open(/usr/local/share/locale/locale.alias, 0x8000), errno 2
注意:我创建(然后删除)空testdir
目录,因此没有捕获到strace输出文件的大量信息。