TRACE32를 사용하다 보면 메모리 덤프에서 특정 데이터를 검색하고 싶은 경우가 있습니다.
이 때는 data.find 명령어를 사용하면 됩니다.
다음은 TRACE32에서 릴리즈한 data.find 관련 스팩 문서(general_ref_d.pdf)의 내용입니다.
Format: Data.Find [<address_range> [%<format>] <data> | <string> [/<option>]]
<format>: Byte | Word | Long | Quad | TByte | HByte | Float .<format> | BE | LE
<option>: Back | NoFind
; search for byte 0x3f in the specified address range
Data.Find 0x100--0xfff 0x3f
; search the next byte x3f
Data.Find
; search for specified string
Data.Find 0x100--0xfff "Test"
; search for 32 bit value 0x00001234 in big endian mode
Data.Find 0x100++0xeff %Long %BE 0x1234
; search backward for 16 bit value 0x0089
Data.Find 0x100++0xeff %Word 0x89 /Back
; search for the float 1.45678 in IEEE format
Data.Find 0x4e00--0x4eff %Float.Ieee 1.45678
자, 그럼 0x80100000와 0x80200000 메모리 구간에 0xDEADBEEF 데이터를 검색하려면, 어떤 명령어를 입력해야 해야 할까요? 다음과 같이 입력하면 됩니다.
data.find 0x80100000--0x80200000 0xDEADBEEF
위와 같이 명령어를 입력하면 TRACE32에서 다음과 같은 결과 화면을 볼 수 있습니다.
Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
'[Debugging] Tips' 카테고리의 다른 글
[리눅스커널] 리눅스 커널 브링업 패치 [1] (4.14v) (0) | 2023.05.04 |
---|---|
[리눅스커널] 디바이스 트리: of_root 디버깅 (0) | 2023.05.04 |
[TRACE32] struct devce 정보 덤프: dpm_device_list_dump.cmm (0) | 2023.05.04 |
[GDB] Arm(Armv7): C 코드와 어셈블리 코드를 동시에 디버깅하기 (0) | 2023.05.04 |
[리눅스커널] 디버깅: TRACE32: 모듈 타입 드라이버 심벌(*.ko)을 로딩해 깨진 콜 스택 복원 (0) | 2023.05.04 |