inflearn logo
강의

Course

Instructor

Structure and Principles of the Linux Kernel: Interrupts [Author's Lecture Part 1-5]

6. bcmgenet_isr0 Interrupt Handler Debugging - TRACE32 (Part.1)

TRACE32 관련 문의 내용

73

wodud0432886

1 asked

0

안녕하세요. 이번 1부- 5강 인터럽트 강의를 듣고 있는 학생입니다.

해당 강의를 들으면서 6. bcmgenet_isr_0 인터럽트 핸들러 디버깅-TRACE32 (Part.1) 를 수강하면서 2-irq-dump 덤프 강의자료로 실습을 진행하는데 TRACE32 의 콜스택이 깨진건지 첨부한 사진과 같이 나옵니다.

처음에는 스택 관련 이슈로 인해서 깨졌다고 생각해서 Crash utility 의 bt -s 명령어 및 log -m 의 출력된 콜스택과 레지스터 셋 정보를 이용해 이전 강의에 들었던 스택 복구를 시도해보았습니다.

하지만 전부 다 콜스택 복구가 안되는것을 확인하여 이것이 어떤 문제인지 궁금해서 질문드립니다.

call_stack_error.png.webp

[해당 2-irq-dump를 Load-Dump - Dump1 으로 불러오면 나오는 화면]

image.png

[불러올때 아래에 뜨는 에러메세지]

말씀드린 것처럼 Crash utility는 정상동작하며, TRACE 32 만 위와 같이 콜스택이 전부 깨져서 나옵니다.
아래는 해당 프로그램을 실행하는 작업환경입니다.
Host OS : Window 11

감사합니다.

linux 운영체제 arm-architecture linux-kernel interrupt irq trace32 callstack출력에러

Answer 2

1

austinkim

아래 환경에서 메모리 덤프 (2-irq_dump.zip)을 내려 받아서, TRACE32 시뮬레이터 프로그램으로 로딩을 했습니다.

-Host OS : Window 11

아래 화면과 같이 제대로 로딩이 된 것을 확인했는데요. 1) TRACE32 프로그램을 다시 실행시킨 다음에, 덤프를 로딩하시거나 2) 2-irq_dump.zip 압축 파일이 제대로 풀렸는지 확인 부탁드립니다.

// 아래는 제가 로딩한 TRACE32 프로그램 스틸컷입니다.

image.png

 

감사합니다.

0

wodud0432886

답변 덕분에 잘 해결했습니다! 감사합니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 염재영님.

TRACE32에서 발생하고 있는 콜스택 깨짐 현상과 관련하여 아래와 같이 해결 방안을 제안드리겠습니다.

TRACE32 콜스택 깨짐 현상

TRACE32에서 콜스택이 깨져보이는 이유는 여러 가지 요소가 있을 수 있습니다. 특히, 스택 프레임과 스택 포인터가 제대로 설정되지 않았거나, 디버거가 소스 코드의 디버깅 정보를 제대로 해석하지 못하는 경우가 빈번합니다. 다음은 이를 해결하기 위한 몇 가지 제안 사항입니다.

  1. 디버깅 정보 확인:
    TRACE32가 올바른 디버깅 정보(symfiles)를 로드하고 있는지 확인해 보세요. 만약 디버깅 정보가 불완전하거나 누락된 경우에도 콜스택이 제대로 복구되지 않을 수 있습니다.

  2. 스택 프레임 포인터 설정:
    프레임 포인터 레지스터가 잘못되었거나 초기화되지 않은 경우 스택 복구에 문제가 발생할 수 있습니다. 이전에 성공적으로 동작하던 설정과 비교하여 프레임 포인터의 상태를 확인해 보세요.

  3. 버전 호환성:
    TRACE32 디버거와 커널 이미지 및 디버깅 정보(symfiles)의 버전 간의 호환성을 확인하세요. 최신 버전에서 문제가 발생하고 있다면, 이전의 안정 버전으로 돌아가서 테스트하는 것도 하나의 방법입니다.

  4. 환경 변수 및 설정:
    TRACE32의 환경 설정이나 특정 변수 설정이 잘못된 경우가 있을 수 있습니다. 예를 들어, 칩셋이나 타겟 아키텍처와 맞지 않게 설정이 되어 있을 수 있습니다. 관련 설정을 초기값으로 되돌리고 테스트해 보세요.

  5. 관련 링크:

이 문제를 해결하지 못한 경우, 강의의 강사님께 추가적인 정보를 요청하거나 문의하기를 통해 더 전문적인 도움을 받으시는 것도 좋은 방법입니다.

염재영님의 이해를 돕기 위해 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

15

1

REST API (Self-descriptive messages)

0

22

1

프로젝트 질문 문의

0

46

1

시스템 엔지니어 관련 질문입니다.

0

50

2

SP와 SP_ELn의 관계

0

25

1

Unauthorized 에러

0

42

2

[진로 관련 문의]

0

27

1

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

40

2

stm32cubeide 관련 문의

0

46

2

강의 슬라이드 문의

0

50

3

만약에 포팅을 할때 1년에 한번 잡는 치명적인 문제를 해결하는 코드가 들어갔다고 가정하면

0

57

2

여러 의문점

1

63

1

72강의 DNS개념(수업자료)에 자료가 없어서 문의 드립니다.

1

56

2

오버라이딩 관련하여 질문드립니다.

0

61

2

CPU 스케줄링 RR 강의 2:54에서 질문 있습니다.

1

57

2

T32 Installation

0

49

2

CPU Bound Process와 sleep, yield에 대해

1

60

1

권한 기본값 질문

0

54

2

5장 Armv7 동작모드와 6장 Armv8 익셉션 레벨 차이

0

40

2

Critical Section과 SRWlock의 차이

0

98

2

강의안 자료는 따로 제공이 안 되나요?

0

83

2

preemption 체크 관련 질문

0

142

2

인터럽트 처리 순서

0

162

2