WSL 환경에서 gdb를 이용해 assembly code를 확인하고자 한다.
위와 같이 간단히 string을 입력받아 출력하는 c code를 작성했다.
gdb로 실행파일 a를 실행했더니 "File format not recognized" error가 발생했다.
file a의 정보를 확인해봤다.
2가지 해결 방법이 있다.
gdb가 32bit이기 때문에 64bit file을 실행하지 못하는 것이다. 따라서 c code를 32bit로 compile한다.
위와 같이 gcc의 -m32 옵션을 통해 32bit로 compile이 가능하다.
만약 fatal error: bits/libc-header-start.h: No such file or directory 발생 시. 다음 명령을 통해 lib를 설치해주자.
sudo apt-get install gcc-multilib g++-multilib
a file의 정보를 다시 확인해보면 32-bit ELF파일로 바뀐걸 확인할 수 있다.
gdb가 파일을 성공적으로 읽었다.
sudo apt-get update -y
sudo apt-get install -y gdb64
위 두 명령을 순차적으로 시행하면 된다.