반응형
1. 개요
- 개발 관련해서 VSCode로 디버깅 시에 이진 데이터(Hex String)를 확인하고 비교해야하는 작업이 자주 있습니다.
- Hex String 값을 1바이트(2개 문자) 단위로 "0x"와 ","를 붙여서 가공해야 하는데, 일일이 하는게 귀찮아서 vscode의 확장을 사용하여 매크로를 만들어서 처리하는 것을 정리하였습니다.
- 예) 01020A1FED -> 0x01, 0x02, 0x0A, 0x1F, 0xED 변환
2. 확장 프로그램 설치
- 매크로를 만들어서 사용하기 위해 설치해야 하는 확장 프로그램입니다.
- multi-command 확장 설치
- VSCode 디버깅 시 이진 데이터 보기로 볼수 있는 hex string 값을 복사하면 Base64 인코딩 된 값이 복사 되므로 이를 다시 Hex String 으로 변환하기 위한 Base64 확장 프로그램을 설치 합니다.
3. settings.json에 매크로 정의
- 확장 프로그램을 설치 했다면 이제 매크로를 settings.json에 정의합니다.
- "ctrl + ," 로 설정 창을 열고 오른쪽 상단의 "설정 열기(JSON)" 아이콘 클릭
- "ctrl + shift + P" 로 명령 팔레트에서 "settings.json"을 입력하여 열기
- 매크로 정의
{ "multiCommand.commands": [ { "command": "multiCommand.add0xToHexString", "sequence": [ { "command": "editor.action.insertSnippet", "args": { "snippet": "${TM_SELECTED_TEXT/([0-9a-fA-F]{2})/0x$1, /g}" } } ] } ], }
4. 단축키(키 바인딩) 설정
- 매크로를 정의 했으면 이제 단축키(키 바인딩)을 설정합니다.
- ctrl + k, ctrl + s(Windows)로 바로가기 키를 열고 오른쪽 상단 "바로가기 키 열기(JSON)" 아이콘 클릭
- 단축키(키 바인딩) 설정
[ { "key": "ctrl+alt+h", "command": "multiCommand.add0xToHexString", "when": "editorTextFocus" }, ... ]
5. 예제
- 여기 까지 왔다면 이제 모든 준비는 완료되었습니다.
- 이제 간단한 예제로 사용법을 확인합니다.
- 소스
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { int nResult = 0; char szBinData1[16] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 }; char szBinData2[16] = { 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 }; nResult = memcmp(szBinData1, szBinData2, 16); if (0 == nResult) { printf("OK \n"); } else { printf("Not OK \n"); } return 0; }
- Makefile
CC = gcc CFLAGS = -Wall -g .c.o: $(CC) -c $(CFLAGS) $(INCS) $< TARGET = test SRCS = main.c OBJS = $(SRCS:.c=.o) INCS = -I./ all: $(TARGET) $(TARGET): $(OBJS) $(CC) -o $@ $< clean: rm -rf *.o $(TARGET)
- 소스는 단순히 배열에 바이너리 데이터를 저장하고 비교해보는 코드입니다.
- 해당 소스를 빌드하고 디버깅을 진행합니다.
- VSCode에서 빌드와 디버깅하는 방법 아래 페이지에서 설명하고 있습니다.
- 디버깅
- 오른쪽 memory.bin 의 바이너리 데이터를 복사하면 Base64인코딩 된 데이터가 복사됩니다.
- 이를 다시 Hex String으로 변환을 위해 Base64 확장 프로그램 단축키 "Ctrl + k, Ctrl + 7" 을 사용합니다.
- 이제 Hex String을 매크로를 사용하여 가공합니다.
- 이제 제가 원하던 형식의 포맷으로 변경되었네요.
- 감사합니다.
반응형
'Visual Studio Code' 카테고리의 다른 글
[VSCode] VSCode Remote-SSH 원격 빌드 및 디버깅 (0) | 2024.03.01 |
---|