1

我想可视化由运行类似git lg -n3. 我在 Mac 上。所以我想,好吧,让我们跑吧dtruss git lg -n3

不幸的是,这并没有给我预期的输出。我希望看到对某些文件的文件访问.git/objects

不是dtruss我要找的吗?

我应该补充一点,我也没有看到git log运行它时的输出dtruss。如果我运行,dtruss git我至少会看到 git 命令概述的输出。我做错了吗?

更新

好的,事实证明这是 dtruss 如何处理多字命令的问题git log。如果我使用dtruss /usr/local/git/libexec/git-core/git-log它按预期工作。

我可以走得更远,跑得更远dtruss /usr/local/git/libexec/git-core/git-log -n3 2>&1 | grep access,得到我想要的东西。所以剩下的唯一问题就是为什么我必须使用完整路径git-log而不仅仅是git log命令。

4

2 回答 2

2

在像 Linux(嵌入式或桌面)这样的 UNIXoid 系统上,我喜欢为此目的使用inotify-tools,例如inotifywaitinotifywatch,这取决于我的确切目的。

编辑:我想知道为什么有人反对我的回答。Inotify-tools 是一组专门用于监视文件系统访问的工具,这就是人们所要求的。如果我的回答似乎不够好或不够相关,我将不胜感激。谢谢你。

于 2014-08-26T22:42:03.060 回答
2

你可能想试试strace。例如,这可能是您正在寻找的结果:

strace -q -f -e trace='open,stat' git log -n3

或者如果你真的想要所有文件系统访问

strace -q -f -e trace=file git log -n3

应该这样做。-f如果您不需要跟踪由less其他可能执行的分叉进程完成的工作,请删除该部分。像往常一样,man strace值得一读...

于 2014-08-27T06:49:31.043 回答