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

标签 python c strace

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

让我把问题说得更笼统一些,我如何使用 strace 来调试 c 语言中的相同问题。

最佳答案

使用 strace 非常简单,但它可能无法为您提供所需的信息。

既然你知道你在寻找什么系统调用,那么最简单的事情就是:

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

(将 mount/dev/... 替换为您的 python 脚本)。 -f 是跟随 children(这里可能不需要),-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 的“解释”,但这只应该在源参数具有无效 super block 时发生,所以消息非常明确(除非您做一些更奇特的事情,在这种情况下还有其他可能性,如 here 所列)。

关于python - Strace:如何调试无效参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322158/

相关文章:

python - 在链表的尾部插入一个节点 python HackerRank

c - 默认文件描述符表无法正常工作

android - 如何从特定的 Android 应用程序捕获网络流量。

Android ADB Linux 问题

python - 在 Pygame.mixer 的声音结尾处防止 "popping"

Python 导入编码风格

Python//解析Json到MySQL

c - iconv 库不正确地将 UTF-8 转换为 KOI8-R

C将字符串解析为没有任何lib函数的字符数组