लोड करने योग्य लिनक्स कर्नेल मॉड्यूल के लिए डीबग-जानकारी कैसे बनाएं (जैसे कि vmlinux- uname -r
.debug में कर्नेल की तरह?) क्या यह मॉड्यूल बनाने के दौरान उत्पन्न होता है, यदि ऐसा है तो यह कहां होगा स्थित?लोड करने योग्य कर्नेल मॉड्यूल के लिए डीबग-जानकारी
उत्तर
मान लें कि आपने कर्नेल को CONFIG_DEBUG_INFO के साथ बनाया है, डीबग प्रतीक पहले से ही मॉड्यूल के लिए .ko फ़ाइल में होना चाहिए। हालांकि मॉड्यूल को किसी भी पते पर गतिशील रूप से लोड किया जा सकता है, आपको जीडीबी को थोड़ी अधिक जानकारी देने की आवश्यकता है।
cd /sys/module/${MODNAME}/sections
cat .text .data .bss
आप इस जानकारी जब मॉड्यूल के बारे में GDB कह उपयोग कर सकते हैं:
(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS}
एक ट्यूटोरियल कि लिनक्स फाउंडेशन की वेबसाइट पर इस से अवगत नहीं है। Kernel and Module Debugging with GDB
#Modify your Makefile like this then build it
#cat /sys/module/mydriver/sections/.text -> find the address
#Then run like add-symbol-file drivers/mydrivers/mydriver.o address from above #line
obj-m += module_name.o
MY_CFLAGS += -g -DDEBUG
ccflags-y += ${MY_CFLAGS}
CC += ${MY_CFLAGS}
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
debug:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
EXTRA_CFLAGS="$(MY_CFLAGS)"
clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
इस लिंक के अनुसार हमें अपने मॉड्यूल की मेक फ़ाइल में -g झंडे जोड़ने की ज़रूरत नहीं है ... ?? https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –
- 1. कर्नेल मॉड्यूल
- 2. कर्नेल मॉड्यूल
- 3. कॉल करने योग्य मॉड्यूल
- 4. संशोधित कर्नेल मॉड्यूल को फिर से लोड करने के लिए कैसे करें
- 5. कर्नेल मॉड्यूल syscalls की निगरानी करने के लिए?
- 6. सी कर्नेल लोड करने के लिए मैं बूटलोडर कैसे लिखूं?
- 7. लिनक्स कर्नेल मॉड्यूल में निष्पादन योग्य पृष्ठ आवंटित कैसे करें?
- 8. लिनक्स कर्नेल - मॉड्यूल
- 9. लिनक्स कर्नेल मॉड्यूल का स्थान
- 10. लिनक्स कर्नेल मॉड्यूल - सुरक्षा जोखिम?
- 11. एक कर्नेल मॉड्यूल
- 12. क्या लिनक्स में कर्नेल मॉड्यूल के लिए आकार सीमा है?
- 13. संकलन त्रुटि: कर्नेल मॉड्यूल
- 14. लिनक्स कर्नेल मॉड्यूल
- 15. लोड करने योग्य बैश बिल्टिन
- 16. कर्नेल मॉड्यूल के निर्माण और काम करने के लिए डिममोड क्यों आवश्यक है?
- 17. क्या कर्नेल मॉड्यूल के लिए किसी अन्य लोड मॉड्यूल के सेक्शन पते खोजने का कोई तरीका है?
- 18. जीएचसी योग्य मॉड्यूल
- 19. यह निर्धारित करने के लिए कि क्या एक विशिष्ट मॉड्यूल लिनक्स कर्नेल
- 20. लिनक्स कर्नेल मॉड्यूल: try_module_get/module_put
- 21. कैसे एक असफल कर्नेल मॉड्यूल
- 22. लिनक्स कर्नेल में मॉड्यूल के साथ कार्यक्षमता ओवरराइडिंग
- 23. कर्नेल मॉड्यूल को संकलित करना
- 24. कर्नेल मॉड्यूल संकलन और KBUILD_NOPEDANTIC
- 25. पोर्टेबल लोड करने योग्य मॉड्यूल के खिलाफ एक्जिक्यूटिव को कैसे लिंक कर रहा है?
- 26. किसी डिवाइस ड्राइवर के लिए कर्नेल मॉड्यूल को लोड करने पर स्वचालित रूप से/dev में डिवाइस कैसे बनाया जाए?
- 27. PostgreSQL स्थापना - मॉड्यूल लोड करने में त्रुटि
- 28. गैर कर्नेल हेडर समेत लिनक्स कर्नेल (2.6) मॉड्यूल संकलित करें
- 29. लिनक्स कर्नेल मॉड्यूल में आवधिक कार्य
- 30. मैं अपने कर्नेल मॉड्यूल में हेरफेर करने के लिए ioctl() का उपयोग कैसे करूं?
क्या मैं ब्रेकपॉइंट्स और वॉचपॉइंट्स सेट कर सकता हूं? उस ट्यूटोरियल में उन्होंने उल्लेख किया है कि हम ब्रेकपॉइंट्स आदि सेट करने जैसे अधिक उन्नत नहीं कर सकते .. ?? और ये सब एक सिस्टम में सही किया जा सकता है? या फिर मुझे पीसी की जरूरत है? –
होस्ट पर रहते हुए आप अपने होस्ट कर्नेल पर ब्रेकपॉइंट्स सेट करने में सक्षम नहीं होंगे। या तो एक वीएम में कर्नेल डीबग करें या सीरियल डीबग को किसी अन्य मशीन पर सेट करें ताकि आप डीबग के रूप में कर्नेल को रोक/शुरू कर सकें। – stsquad