2015-02-05 4 views
1

ddd가있는 qemu의 JOS 커널 (mit operating system lab)을 디버깅합니다. init.c에 정의 된 커널 메인 함수 i386_init을 호출하는 어셈블리 명령어에 중단 점을 설정했습니다. 내가 커널을 시작할 때, ddd (gdb)는 녹색 화살표가 표시된 명령에서 잘 나옵니다. 하지만 stepi 명령을 사용하면 녹색 화살표가 사라지고 ddd가 i386_init() 정의가 포함 된 파일을 열지 않습니다. 그리고 디버그 프로세스는 gdb에서만 계속됩니다. ddd가 프로세스를 따르지 않습니다. 내가 파일 init.c을 열 때 더 이상, DDD는이 오류를 보여줍니다 : 나는 이런 종류의 오류에 대한 몇 가지 연구를 수행 한ddd 녹색 디버깅 화살표가 명령을 통해 실행 중일 때 사라짐

Line 1 of \"kern/init.c\" is at address 0xf0100040 but contains no code.\n

을 그리고 문제가 동적 라이브러리에서 오는 것으로 보인다. 하지만 제 경우에는 동적 라이브러리가 없습니다. 그렇다면이 문제를 일으키는 원인은 무엇이며 문제를 해결하는 방법은 무엇입니까?

답변

1

이 문제는 내가 만든 크로스 컴파일러 때문에 발생합니다. 이것은 다소 버그가있을 수 있습니다. 내가 컴파일러를 변경했기 때문에, ddd는 현재 잘 작동합니다.