Strace:如何调试无效参数错误

时间:2011-06-12 13:18:33

标签: python c strace

我正在编写一个python程序,通过使用ctypes的mount系统调用来挂载fuse文件系统。现在它在mount系统调用中给出了无效参数错误。我检查了所有的论点,他们似乎是正确的。我从朋友那里听说strace可以用来调试这些类型的错误。有人可以指导我如何使用strace来调试问题。任何帮助,将不胜感激。提前谢谢。

让我让问题更通用,我如何使用strace来调试c langauge中的相同问题。

1 个答案:

答案 0 :(得分:1)

使用strace非常简单,但可能无法提供您想要的信息。

既然你知道你正在追求什么样的系统调用,最简单的事情就是:

strace -fv -e trace=mount mount /dev/sda1 /tmp

(用你的python脚本替换mount /dev/...)。 -f是关注子项(此处可能不必要),-v表示详细,-e trace=mount指示strace仅跟踪mount系统调用。

此处的示例输出:

$ sudo strace -fv -e trace=mount mount /dev/sda1 /tmp
mount("/dev/sda1", "/tmp", "ext2", MS_MGC_VAL, NULL) = 0

所以你看到传入的参数基本上是以它们到达内核的形式传递的,并且返回代码。

虽然你不会得到EINVAL的“解释”,但是只有当source参数有一个无效的超级块时才会发生这种情况,所以这个消息很明确(除非你做更多的事情)异国情调,在这种情况下,列出here)还有其他可能性。