본문 바로가기

Software

소스 코드 분석

1. 개념 파악

내 소스가 어디에서 돌아가는 건지, 어떤 용도로 쓰는 건지 파악하기

 

2. 환경 구축

소스 컴파일 & 크로스 컴파일

※ 아키텍쳐: 컴퓨터 시스템의 하드웨어 구조

※ 플랫폼: 하나의 운영체제 또는 컴퓨터 아키텍쳐라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있다.

※ 크로스 컴파일은 컴파일러가 실행 중인 플랫폼이 아닌 다른 플랫폼용으로 실행 가능한 코드를 생성하는 것이다.

 

3. 실제 기기에 Porting

※ Porting은 다른 플랫폼에서 실행되도록 기존 코드를 수정하는 것

 

4. 분석

1) 개별 단위 함수부터 보는 대신 문서, 코드 이외의 다른 참고 자료부터 살펴보기

2) 프로젝트 구조 파악하기

    - 큰 순서로 돌아가는 것 파악

3) 찾아낸 사실을 그림/문서로 만들기

    - 찾아낸 사실을 문서로 만들고 프로그램 흐름에 맞춰 가정과 결론을 나중에 찾아볼 수 있게 주석으로 달아놓기

4) 구조 파악이 끝나면 내가 이 프로그램을 만든다면 어떻게 구조를 짤지 재구성해보기

 

5. 집중적으로 분석할 부분 선택

Chain of actions 접근법을 사용할 것

   -  아는 부분의 코드를 찾고 어떻게 작동하는지 처음부터 끝까지 추적한다.

 

1) 특정 코드가 어떤 역할을 하는지 알고, 그 코드에서 어떤 코드가 그 역할을 하는지 찾아낸다.

2) 그리고 파일에서 어떻게 나타나는지 찾아낸다.

3) 한번 더 뒤로 가서 어디서 나왔는지 찾아낸다.


<참고: 크로스 컴파일과 porting의 차이점>

크로스 컴파일과 porting은 서로 다른 플랫폼용 소프트웨어 개발과 관련된 서로 다른 두 가지 개념입니다. 둘 다 개발된 플랫폼이 아닌 다른 플랫폼에서 실행할 수 있는 소프트웨어를 만드는 것과 관련이 있지만 이 두 접근 방식의 방법과 목표는 다릅니다.

크로스 컴파일은 하나의 시스템인 호스트 시스템에서 소프트웨어 코드를 컴파일 하여 다른 시스템인 대상 시스템에서 실행하는 프로세스입니다. 크로스 컴파일의 목표는 컴파일러가 실행 중인 플랫폼과 다른 플랫폼에 대해 실행 가능한 코드를 생성하는 것입니다. 크로스 컴파일은 임베디드 또는 특수 시스템용 소프트웨어를 만들거나 여러 빌드 환경 없이 여러 플랫폼용 소프트웨어를 개발하는 데 자주 사용됩니다.

반면 porting은 다른 플랫폼에서 실행될 수 있도록 소프트웨어 코드를 수정하는 것입니다. porting의 목표는 기능이나 성능을 잃지 않고 다른 플랫폼에서 실행되도록 기존 소프트웨어를 조정하는 것입니다. porting에는 대상 플랫폼의 아키텍처 및 운영 체제와 호환되도록 소프트웨어 코드를 수정하는 작업이 포함됩니다. 여기에는 시스템 호출 수정, 대상 플랫폼의 하드웨어에 대한 코드 최적화, 라이브러리 및 기타 종속성과의 호환성 문제 해결이 포함될 수 있습니다.

크로스 컴파일과 porting에는 서로 다른 플랫폼용 소프트웨어 개발이 포함되지만 크로스 컴파일은 일반적으로 porting보다 빠르고 효율적입니다. 크로스 컴파일에는 대상 플랫폼의 하드웨어 및 소프트웨어에 최적화된 코드를 생성할 수 있는 크로스 컴파일러가 필요합니다. 반면 porting은 기존 코드를 수정하는 작업으로, 시간이 오래 걸리고 소프트웨어 아키텍처를 크게 변경해야 할 수 있습니다.

요약하면 크로스 컴파일은 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼용으로 실행 가능한 코드를 생성하는 것이고 porting은 다른 플랫폼에서 실행되도록 기존 코드를 수정하는 것입니다. 두 접근 방식은 서로 다른 플랫폼용 소프트웨어를 개발하는 데 유용할 수 있지만 방법과 목표가 다릅니다.


<참고 자료>

https://www.youtube.com/watch?v=jdJ5ooqyiaQ 

https://velog.io/@qksud14/jrdev-02

 

스타트업 신입 개발일지(02 : 소스 코드 분석하기)

제대로된 코드를 만들기 위해서는 제대로된 코드를 많이 읽어보면 된다.기존에 사용하는 라이브러리나 플러그인의 코드를 읽어라인상깊었던 소프트웨어 코드를 읽어라존경하는 사람이 만든

velog.io

 

'Software' 카테고리의 다른 글

STM32CubeIDE 설치방법  (0) 2023.08.16