로드 가능한 리눅스 커널 모듈의 디버그 정보를 빌드하는 방법 (vmlinux-uname -r
.debug의 커널과 같은)? 모듈을 빌드하는 동안 생성 되는가? 찾았 어?로드 할 수있는 커널 모듈에 대한 디버그 정보
6
A
답변
5
커널을 CONFIG_DEBUG_INFO로 빌드했다고 가정하면 디버그 기호는 해당 모듈의 .ko 파일에 있어야합니다. 그러나 모듈이 어떤 주소에 동적으로로드 될 수 있기 때문에 gdb에 좀 더 많은 정보를 제공해야합니다. 모듈에 대해 GDB를 이야기 할 때
cd /sys/module/${MODNAME}/sections
cat .text .data .bss
그런 다음이 정보를 사용할 수 있습니다 :
(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS}
는 리눅스 재단의 웹 사이트에이 과정을 안내 튜토리얼이있다. Kernel and Module Debugging with GDB
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
이 링크마다 우리 모듈의 make 파일에 -g 플래그를 추가 할 필요가 없습니다 ... ?? https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –
관련 문제
- 1. 커널 모듈에 대한 proc_create() 예제
- 2. 커널 크래시 후 리눅스 커널 디버그 정보 얻기
- 3. Xserver 모듈에 대한 버전 정보
- 4. 리눅스 커널 모듈에 관하여
- 5. 로드 할 수있는 캐시
- 6. 로드 이미 커널
- 7. 로드 이벤트 디버그
- 8. Linux 커널 모듈에 대한 프로세서 선호도 설정은 무엇입니까?
- 9. Linux 커널 디버그 출력물?
- 10. UIWebView :로드 백분율 정보
- 11. 루비 디버그 "로드 할 파일이 없습니다. --spec_helper"
- 12. 로드 테이블 정보
- 13. 리눅스 커널 모듈에 대한 명령어 라인 인수로 배열 전달하기
- 14. GCC 디버그 정보
- 15. 커널 모듈의 CPU 정보
- 16. 커널 모듈에 파일 시스템 마운트 지점 받기
- 17. 중단 프로세스 용 커널 디버그?
- 18. Tomcat/Java 디버그 정보
- 19. 콘솔에서 디버그 정보 출력
- 20. 커널 모듈에 DKMS 지원을 추가 할 때의 문제
- 21. 커널 모듈에 이더넷 패킷을 작성하여 보내십시오.
- 22. 커널 모듈에 시스템 호출을 설치하는 방법
- 23. 하이브에 UDF가있는 디버그 정보
- 24. 리눅스 커널 모듈에 의해 할당 된 최대 메모리
- 25. MediaElement.js - 디버그 정보
- 26. libusb-1.0 디버그 정보
- 27. 로드 할 수있는 방법 : IFRAME의 탭?
- 28. 로드 된 DataTable에서 정보 얻기
- 29. 커널 랜드에서 사용자 영역 응용 프로그램을 디버그 할 수 있습니까?
- 30. 커널 모듈에 의해 차단되지 않는 블록이 선택 될 수 있습니까?
브레이크 포인트와 와치 포인트를 설정할 수 있습니까? 그 튜토리얼에서 우리는 중단 점 등을 설정하는 것과 같은 고급 기능을 수행 할 수 없다고 언급했습니다. ?? 이 모든 작업은 단일 시스템에서 올바르게 수행 할 수 있습니까? 그렇지 않으면 PC가 필요합니까? –
호스트에있는 동안 호스트 커널에 중단 점을 설정할 수 없습니다. VM에서 커널을 디버그하거나 직렬 디버그를 다른 시스템에 설정하여 디버깅 할 때 커널을 중지/시작할 수 있습니다. – stsquad