目前,我正在使用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. Linux的能力在FUSE文件系統
- 2. FUSE文件系統在打開文件時崩潰(僅在發佈模式下)
- 3. 從FUSE調試系統調用
- 4. 調試Solaris操作系統崩潰
- 5. FUSE文件系統操作
- 6. Linux加密模塊系統崩潰
- 7. 在Linux上用FUSE實現異步文件系統
- 8. 內存中FUSE文件系統
- 9. 如何在android中轉儲文件系統/ dev/fuse?
- 10. Linux下C++系統()調用崩潰時,函數返回
- 11. 如何在FUSE readdir調用中返回文件統計信息?
- 12. iOS如何調試崩潰?
- 13. 如何調試IE8崩潰?
- 14. TextInput崩潰 - 如何調試?
- 15. 如何調試GPF崩潰?
- 16. 如何調試VB6崩潰?
- 17. 從FUSE文件系統訪問數據
- 18. FUSE文件系統隱藏鸚鵡螺
- 19. 像文件系統一樣的FUSE
- 20. re.compile(模式,文件)調用導致系統崩潰
- 21. 在Linux平臺上捕獲文件系統系統調用
- 22. Linux中的文件系統
- 23. 在Linux proc文件系統
- 24. 在C中導致系統崩潰#
- 25. 支持在FUSE文件系統中使用FUSE-J寫入操作
- 26. FUSE:如何在鏈接基於FUSE的文件系統時獲取調用進程的原始(非根)用戶
- 27. 的Mac OS X系統崩潰日誌調試目標C
- 28. FUSE文件系統監視任何創建/刪除的文件
- 29. FUSE開放的系統調用機制
- 30. 從Jboss Fuse/Karaf文件系統中加載屬性文件Nullpointer
你是什麼意思「使用」?您是否嘗試實施基於熔絲機制或其他功能的使用空間文件系統? – 2009-12-09 06:25:41
+1 - FUSE調試可能有點痛苦。 – 2009-12-09 12:31:38
@arsane,是的,我正在實現一個基於FUSE的用戶空間文件系統。 – Hrishi 2009-12-09 15:34:51