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