2012-09-25 20 views

cevap

5

Çekirdeği CONFIG_DEBUG_INFO ile oluşturduğunuzu varsayarsanız, hata ayıklama simgeleri söz konusu modül için .ko dosyasında olmalıdır. Ancak modül herhangi bir adrese dinamik olarak yüklenebileceğinden, gdb'ye biraz daha fazla bilgi vermeniz gerekir. modülleri hakkında GDB anlatarak

cd /sys/module/${MODNAME}/sections 
cat .text .data .bss 

Daha sonra bu bilgileri kullanabilirsiniz:

(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS} 

Linux Vakfı web sitesinde bu size anlatan bir öğretici vardır. Kernel and Module Debugging with GDB

+0

Kesme noktalarını ve izleme noktalarını ayarlayabilir miyim? Bu öğreticide, kesme noktaları vb. ayarlama gibi daha gelişmiş yapamayacağımızdan bahsettiler. ve tüm bunlar tek sistemde yapılabilir mi? ya da PC'lere ihtiyacım var? –

+0

Ana bilgisayar üzerinde ana bilgisayar kağıdınızda kesme noktaları ayarlayamayacaksınız. Bir VM'deki çekirdeği ayıklayın veya seri hata ayıklamayı başka bir makineye kurun; böylece, hata ayıklama sırasında çekirdeği durdurabilir/başlatabilirsiniz. – stsquad

4
#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 
+0

Bu bağlantıya göre modülümün make dosyasında -g bayraklarını eklememize gerek yok ... ?? https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –

İlgili konular