1. linked list를 표현하고자 할 경우
아래와 같은 명령어를 입력하면 dcc_tcb의 linked list를 표현한다.
v.chain %l %m %all dcc_tcb dcc_tcb.link.next_ptr
2. 특정 변수의 데이터를 dump하고 싶은 경우
var.dump %BIN err_f3_trace_buffer /orient
3. 소스 코드의 패스를 지정
y.spath.srd "Y:\f3_main_src\non_HLOS\modem_proc"
4. 소스 코드에서 스트링을 검색
data.grep "err_init" err.c
4.1 모든 소스에서 아래 스트링을 검색
data.grep "err_f3_trace_buffer"
5. 현재 심볼의 상태(소스 수, 라인 수)를 표현 -------- good ---------
y.state
6. address에 해당하는 소스 파일 이름과 라인 정보를 볼 수 있음 -------- fantastic ---------
y.l.line 0x8D56C460
7. register logging
AREA.Create REG_LOG
AREA.OPEN REG_LOG regfile.log
AREA.view REG_LOG
Register.LOG ALL /AREA REG_LOG
[여기서 부터 디버깅 진행 ]
Register.LOG
AREA.CLOSE REG_LOG
8. register 정보를 리셋시킴
register.reset
9. T32를 사용할 때의 모든 커맨드 사용에 대한 기록을 저장함
LOG.OPEN crash.cmm
... 디버깅 진행 ...
LOG.CLOSE
10. y.l.spath
현재 T32 심볼의 path를 알려줌
11. y.l.tree -------- good ---------
현재 T32 심볼의 address 별로 관련 소스 파일의 이름을 보여줌
12. y.l.source -------- good ---------
현재 T32 심볼에 대한 full source code를 보여줌
소스를 처음 볼때 상당히 좋음
13. y.l.section -------- good ---------
처음 코드를 볼 때 아주 좋음
현재 코드 전체에 대한 section 정보를 보여줌
14. y.RELOCate.List
현재 코드의 빌드 정보를 보여줌
15. sYmbol.Browse.Source
소스 파일 이름으로 심볼을 볼 수 있음
sYmbol.Browse.Source err.c
16. y.l.l [address] -------- fantastic ---------
address 정보에 대한 local register 정보를 볼 수 있음
17. sYmbol.List.Module err_init
모듈에 대한 정보를 볼 수 있음
18. sYmbol.List.STACK sbl1_main_ctl
y.l.s
각 address별로 사용하는 stack정보를 파악할 수 있음
19. sYmbol.List.Static
map 파일에서 선언된 memory region 값 및 static으로 선언된 변수를 확인 가능
fs_rmts_cookie_copy_buffer
18. sYmbol.NEW.Var
심볼 변수를 새롭게 만듦
ex) sYmbol.NEW.Var austinLove 0x8cf00000 uint32
19. Data.A [주소] 명령어 -------- fantastic ---------
Data.A 0x8cf000c0 R1=memub(R16+#0x1)
instruction을 바꿀 수 있는 명령어
20. history의 내용을 저장할 수 있는 명령어
history.save "filiename"
21. 특정 파일에 디버그 정보를 저장할 수 있음
printer.open "file name"
...명령어 입력...
printer.close "file name"
ex) printer.open debug.txt
wp.r
wp.v.f. /a /l /c
wp.v.w %all coredump
printer.close
C:\T32\iTSP\debug.txt 파일이 생성됨
22. 특정 함수로 바로 이동할 수 있음
v.c function(param1, param2, ...)
ex)v.c err_init(0)
23. 지역변수를 볼 수 있음
v.l %all
24. MMU 정보를 확인
mmu
25. 페이지 테이블을 확인
mmu.list.pagetable
mmu.list.KernelPageTable
26. 테스크 정보를 읽어옴
task.dtask
태스크 별 스택을 프로파일링함
task.stack
>>>
&sctlr_el1_reg=0x0
&tcr_el1_reg=0x0
&ttbr0_el1_reg=0x0
&ttbr1_el1_reg=0x0
&esr_el1_reg=0x0
&far_el1_reg=0x0
&contextidr_el1_reg=0x0
&tpidr_el0_reg=0x0
&tpidr_el1_reg=0x0
&tpidrro_el0_reg=0x0
&sctlr_el1_reg=V.VALUE(sctlr_el1)
&tcr_el1_reg=V.VALUE(tcr_el1)
&ttbr0_el1_reg=V.VALUE(ttbr0_el1)
&ttbr1_el1_reg=V.VALUE(ttbr1_el1)
&esr_el1_reg=V.VALUE(esr_el1)
&far_el1_reg=V.VALUE(far_el1)
&contextidr_el1_reg=V.VALUE(contextidr_el1)
&tpidr_el0_reg=V.VALUE(tpidr_el0)
&tpidr_el1_reg=V.VALUE(tpidr_el1)
&tpidrro_el0_reg=V.VALUE(tpidrro_el0)
&sctlr_el1_reg_t=FORMAT.DECIMAL(0., &sctlr_el1_reg)
PER.Set SPR:0x30100 %QUAD &sctlr_el1_reg // SCTLR_EL1
PER.Set SPR:0x30200 %QUAD &ttbr0_el1_reg // TTBR0_EL1
PER.Set SPR:0x30201 %QUAD &ttbr1_el1_reg // TTBR1_EL1
PER.Set SPR:0x30202 %QUAD &tcr_el1_reg // TCR_EL1
PER.Set SPR:0x30520 %QUAD &esr_el1_reg // ESR_EL1
PER.Set SPR:0x30600 %QUAD &far_el1_reg // FAR_EL1
PER.Set SPR:0x30D01 %QUAD &contextidr_el1_reg // CONTEXTIDR_EL1
PER.Set SPR:0x33D02 %QUAD &tpidr_el0_reg // TPIDR_EL0
PER.Set SPR:0x33D03 %QUAD &tpidrro_el0_reg // TPIDRRO_EL0
PER.Set SPR:0x33D04 %QUAD &tpidr_el1_reg // TPIDR_EL1
mmu.delete
mmu.scan
mmu.on
enddo
>>>
'[Debugging] Tips' 카테고리의 다른 글
[리눅스] GDB 프로그램 사용 위치 파악: 'which -a' (0) | 2023.05.04 |
---|---|
[리눅스커널] 부팅 과정 유익한 패치 (0) | 2023.05.04 |
[리눅스커널] 리눅스 커널 브링업 패치 [1] (4.14v) (0) | 2023.05.04 |
[리눅스커널] 디바이스 트리: of_root 디버깅 (0) | 2023.05.04 |
[TRACE32] 메모리 덤프에서 검색(서치)하는 명령어: data.find (0) | 2023.05.04 |