일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SW 검정
- 동적프로그래밍
- SW검정
- Linux
- 보정서
- 네트워크 문제 해결
- 알고리즘
- Ctrl z
- 모터종류
- 주식
- vc mfc
- pca
- 진보성
- PID
- 직선의 방정식
- algorithm 함수
- 주성분 분석
- 플레인 스위핑
- SQLite
- 모든 경우수 돌기
- 유클리드 거리
- 전세
- 리눅스
- 최소 신장 트리
- 리본
- WebService
- 동적 프로그래밍
- 특허
- gsoap
- PID 제어
- Today
- Total
목록리눅스 (2)
박문식 http://forum.falinux.com/zbxe/index.php?document_srl=533239 2010.11.20 17:37:55 (*.82.68.231) 88877 objdump를 이용한 oops 메세지 분석을 통한 디버깅. 쉽게 쉽게... 고의로 커널 패닉을 낸후에 그 위치를 찾는 방법을 설명한다. 커널 패닉의 종류는 꽈꽉 꼬여있는 라이브러리에서 발생하기도 하고 도저히 찾을수 없는 위치에 존재하기도 한다.(그런 경우는 알아서 하자) 다만, printk 를 한줄씩 넣어가면 하는 디버깅보다는 운이 좋다면 한번에 정확한 위치를 찾을수도 있다. 커널의 init/main.c 함수에는 start_kernel 함수가 있다. 여기에서 고의로 널포인터를 넣고 웁스 패닉을 낸후에 그 위치를 찾아보자..
커널의 변수도 당연히 직접적인 접근할 수 없습니다. linking을 하지 않으므로 당연히 불가능합니다. mdelay() 자체는 macro이지만 그 macro를 계속 따라가다 보면 결국은 커널 변수에 대한 접근 혹은 커널 함수를 부르게 될 겁니다. 따라서 mdelay() 호출은 불가능합니다. system call은 linking으로 연결되지 않습니다. 예를 들어 system call인 read의 구현은 kernel source 상에 fs/read_write.c에 sys_read()라는 함수로 되어 있습니다. user는 read system call을 glibc 내부의 함수 read()를 불러서 수행하게 됩니다. glibc 내부의 read()라는 함수의 내용은 단순히 system call instructio..