보안공부

리눅스 디버거에 대해서 알아보자

ddongji 2023. 5. 4. 15:09

디버거는 프로그램의 오류를 찾아 수정하는데 사요오디는 도구입니다. 디버거를 사용하면 프로그램의 실행 중에 메모리, 레지스터, 스택 등의 정보를 검사하고, 중단점을 설정하여  실행을 일시 중시하고 프로그램 상태를 확인할 수 있습니다. 이를 통해 개발자는 프로그램의 동작을 이해라고, 문제를 해결할 수 있습니다.

 

디버거에서 일반적으로 사용되는 기능을 알아보도록 하겠습니다.

 

  1. 중단점 : 프로그램 실행중 특정 지점에서 실행을 일시 중지하는 기능입니다. 개발자는 중단점을 설정하여 프로그램의 특정 위치에서 실행을 중지하고, 해당 위치에서 변수 및 상태를 확인하거나 수정할 수 있습니다.
  2. 단계발 실행 : 프로그램 실행 중에 코드 라인을 한 줄씩 실행하면서 모니터링하는 기능입니다. Step Over는 다음 줄로 이동하고, Step Into는 함수 내부로 이동하며, Step Out은 현재 함수의 실행을 끝내고 호출한 위치로 돌아갑니다.
  3. 변수 및 상태 모니터링 : 프로그램의 현재 변수 값을 확인하거나 변수를 수정할 수 있습니다. 또한, 메모리 상태나 레지스터의 값을 확인할 수 있습니다.
  4. 조건부 중단점 : 프로그램의 실행 조건을 설정하여, 해당 조건이 충족될 때만 실행을 중지하는 기능입니다. 예를 들어, 특정 변수 값이 일정 범위를 벗어나거나, 특정 함수 호출 시점에만 중단점을 설정할 수 있습니다.
  5. Call Stack 모니터링 : 현재 실행 중인 함수의 호출 스택을 추적하고, 함수 호출 관계를 확인할 수 있습니다.
  6. 메모리 브라우저 : 프로그램의 메모리 내용을 볼 수 있는 기능입니다. 디버깅 중에는 프로그램이 어떻게 메모리를 사용하고 있는지 확인하는데 유용합니다.
  7. Watch 또는 Expression Evaluation : 프로그램에서 특정 변수 또는 식의 값을 실시간으로 확인할 수 있는 기능입니다. 개발자는 코드가 실행되는 동안 특정 변수나 식의 값을 확인하거나 수정할 수 있습니다.
  8. 스템핑 기능 : 디버거에서는 스템핑 기능을 통해 개발자는 프로그램의 동작을 더 자세히 분석할 수 있습니다. 이 기능을 사용하면 개발자는 하나의 명령문 또는 함수 호출의 실행 내용을 하나씩 살펴볼 수 있습니다.
  9. 다양한 타입의 데이터 출력 : 디버거에서는 여러 종류의 데이터를 출력할 수 있습니다. 예를 들어, 디버거는 문자열, 숫자, 포인터, 배열 등 다양한 데이터 타입을 출력할 수 있으며, 이를 통해 개발자는 변수의 값이나 함수 호출 결과 등을 쉽게 확인할 수 있습니다.
  10. 다양한 디버깅 모드 : 디버거는 다양한 디버깅 모드를 제공합니다. 예를 들어, 코드 실행을 일시 중지하고 디버깅 모드로 전환한 후 특정 조건이 충족될 때까지 코드를 실행할 수 있는 조건부 실행 모드는 있습니다. 또한 메모리 덤프 등의 기능을 통해 프로그램의 상태를 저장하고 나중에 다시 디버깅할 수 있는 기능도 있습니다.
  11. 프로그램의 상태 저장 및 복원 : 디버거에서는 프로그램의 상태를 저장하고 나중에 다시 불러올 수 있는 기능도 제공합니다. 이를 통해 개발자는 디버깅을 일시 중지하고 나중에 다시 이어서 진행할 수 있습니다.

이러한 다양한 기능들을 활용하여 개발자는 더욱 정확하고 효율적으로 프로그램을 디버거할 수 있습니다.