目前,我正在使用C语言在Linux(2.6 Kernel)中使用FUSE文件系统模块开发应用程序。由于编程错误,安装文件系统后应用程序崩溃。因为我是Linux/C环境中的新手开发人员。你能让我告诉我可能的选项来调试这些程序吗?如何在Linux中调试FUSE文件系统崩溃
回答
首先,确保您正在编译启用调试符号(-g
选项为gcc
)。你运行程序之前,能够与shell命令核心转储:
ulimit -c unlimited
然后,当应用程序崩溃,它会在当前工作目录下留下一个core
文件(只要它可以写入)。
然后,您可以加载内核文件中gdb
调试器:
gdb <executable file> <core file>
...,它会告诉你在哪里坠毁,并让你检查变量等等。
您可以使用Valgrind与FUSE,但read this first了解setuid解决方法。我实际上做以下为别人谁可能需要调试我的文件系统中的方便:时间
#include <valgrind/valgrind.h>
if (RUNNING_ON_VALGRIND) {
fprintf(stderr,
"******** Valgrind has been detected by %s\n"
"******** If you have difficulties getting %s to work under"
" Valgrind,\n"
"******** see the following thread:\n"
"******** http://www.nabble.com/valgrind-and-fuse-file-systems"
"-td13112112.html\n"
"******** Sleeping for 5 seconds so this doesn't fly by ....",
progname, progname);
sleep(5);
fprintf(stderr, "\n");
}
我在FUSE了很多工作..和90%的我崩溃是由于这会导致泄漏OOM杀手能够采取行动,解除引用不良指针,双重释放()等等。Valgrind是一个很好的工具。 GDB很有帮助,但我发现Valgrind是不可或缺的。
该链接中断 – 2010-01-02 06:49:28
但是,这个工程:http://thread.gmane.org/gmane.comp.file-systems.fuse.devel/5224 – 2010-01-02 06:56:23
用-d
选项运行您的保险丝客户端。
我知道这个问题很老,但如果使用-f
开关,它将在前台运行,这对调试非常有帮助。 -s
开关禁用多线程,这也非常有用。
我目前正在开发一个FUSE驱动程序,而这个页面非常有帮助:http://www.cs.hmc.edu/~geoff/classes/hmc.cs135.201109/homework/fuse/fuse_doc.html
引述:
printf的你的printf/fprintf中调试代码,如果你与运行只会工作 - f开关。否则,保险丝断开stdout和stderr。
谢谢你的指针。据我所知,这是最有用的答案。 – 2015-11-12 19:06:42
UML非常适合调试linux内核文件系统的通用部分,调度但不是硬件平台或驱动程序特定部分的内核。
http://www.csee.wvu.edu/~katta/uml/x475.html
http://valerieaurora.org/uml_tips.html
而且看仔细图:
您将看到应用 “你好”,这是实现所有FUSE回调处理程序。所以大多数调试都在用户空间程序中,因为FUSE内核模块(和libfuse)一般意味着被ALL FUSE文件系统使用。
- 1. FUSE文件系统在打开文件时崩溃(仅在发布模式下)
- 2. 从FUSE调试系统调用
- 3. 调试Solaris操作系统崩溃
- 4. 在Linux上用FUSE实现异步文件系统
- 5. Linux加密模块系统崩溃
- 6. Linux下C++系统()调用崩溃时,函数返回
- 7. 如何在FUSE readdir调用中返回文件统计信息?
- 8. 像文件系统一样的FUSE
- 9. TextInput崩溃 - 如何调试?
- 10. 如何调试IE8崩溃?
- 11. 如何调试VB6崩溃?
- 12. re.compile(模式,文件)调用导致系统崩溃
- 13. 支持在FUSE文件系统中使用FUSE-J写入操作
- 14. 在C中导致系统崩溃#
- 15. Linux中的文件系统
- 16. 的Mac OS X系统崩溃日志调试目标C
- 17. FUSE文件系统监视任何创建/删除的文件
- 18. JNI NewStringUTF崩溃android系统
- 19. 如何使用Fuse文件系统进行转换?
- 20. 调试tomcat崩溃
- 21. 调试崩溃(C++)
- 22. 调试Silverlight崩溃
- 23. 如何调试崩溃的转储文件?
- 24. 在Windows操作系统上Py_Initialize崩溃
- 25. 是否有任何FUSE文件系统的基准测试工具?
- 26. 如何调试崩溃日志
- 27. 如何调试Sitefinity 4.0崩溃?
- 28. 如何调试崩溃应用程序
- 29. 如何调试和重现`NSOperationQueue`崩溃
- 30. 如何调试python脚本崩溃python
你是什么意思“使用”?您是否尝试实施基于熔丝机制或其他功能的使用空间文件系统? – 2009-12-09 06:25:41
+1 - FUSE调试可能有点痛苦。 – 2009-12-09 12:31:38
@arsane,是的,我正在实现一个基于FUSE的用户空间文件系统。 – Hrishi 2009-12-09 15:34:51