디버그 보기 사용

디버그 보기로 프로그램의 디버깅을 관리할 수 있습니다. 디버그 보기는 디버그하는 각 대상에 대해 일시중단된 스레드의 스택을 표시합니다. 디버그 대상(스레드 및 스택 프레임과 연관됨)은 디버그하는 각 프로그램 또는 애플리케이션의 디버그 보기에서 표시됩니다.

이 태스크 정보

다음 다이어그램에 따라 디버그 보기의 일반적인 디버그 대상을 설명합니다.

디버그 보기

디버그 보기에서 프로그램의 디버그 세션을 시작하는 데 사용한 실행 항목이 맨 위 노드 레벨에 표시됩니다(다이어그램에서 포인터 A.). 실행 항목 아래 디버그 엔진을 나타내는 노드가 표시됩니다(다이어그램에서 포인터 B.). 그런 다음 프로그램의 각 스레드가 표시됩니다(다이어그램에서 포인터 C.). 프로그램 실행 중지 시, 기본적으로 중지된 스레드의 노드를 자동으로 펼쳐 해당 스택 프레임을 표시합니다(다이어그램에서 포인터 D.). 수동으로 펼친 기타 스레드는 다음에 프로그램이 일시중단되면 자동으로 펼쳐집니다. 마지막으로, 디버그되는 프로세스 및 프로그램을 나타내는 노드가 표시됩니다(다이어그램에서 포인터 E.).

참고:
  • 단일 스레드 애플리케이션(libpthreads.a 없이 빌드됨)의 경우 디버그 보기에 표시되는 스레드 ID는 항상 커널 스레드 ID입니다. 이 ID는 일반적으로 큰 숫자입니다.
  • 다중 스레드 애플리케이션(libpthreads.a 포함하여 빌드됨)의 경우 디버그 보기에 표시되는 스레드 ID는 pthread ID입니다. 이 ID는 일반적으로 작은 숫자입니다. 스레드 ID 숫자가 큰 스레드는 pthread와 현재 연관되지 않은 커널 스레드를 나타냅니다. 이는 일반적으로 애플리케이션이 SIGSTOP과 같은 비동기 신호를 받은 경우에 발생합니다. 이러한 스레드는 신호가 처리되면 사라집니다.
  • 다중 스레드 프로세스에서 fork()를 호출한 후 하위 프로세스가 오도록 선택하면 디버거는 하위 프로세스에 있는 단일 커널 스레드만 디버그합니다. 이 스레드의 ID가 커널 스레드의 ID가 됩니다.

프로그램 실행이 일시중단되면, 편집기는 선택된 스택 프레임의 소스를 열어 실행하려는 프로그램의 소스 행을 강조표시합니다. 프로그램에 여러 개의 스레드가 있으면 중지된 스레드의 스택이 디버그 프레임 끝으로부터 화면이동될 수 있습니다.

디버그 뷰는 디버거 디먼 설정에도 사용할 수 있습니다. 이에 대한 정보는 디버그 엔진 청취에 대한 관련 항목을 참조하십시오.

실행, 종료 및 분리

이 태스크 정보

디버그 보기에서 다음과 같은 기본적인 디버그 조치를 실행할 수 있습니다.

  • 애플리케이션을 실행하려면 재개 단추(재개 아이콘)를 클릭하거나 F8을 누르십시오.
  • 디버그 세션을 종료하려면 종료(종료 아이콘)를 클릭하거나 Shift+F8을 누르십시오. 또는 종료할 디버그 대상(또는 스레드나 스택 중 하나)을 마우스 오른쪽 단추로 클릭하고 종료 조치 중 하나를 선택하십시오.
  • 프로그램에서 분리하고 실행 상태로 유지하려면 연결 끊기(연결 끊기 아이콘)를 클릭하십시오. 이 조치는 디버깅하는 프로그램이 시작된 방법에 따라 사용하지 못할 수 있습니다.

실행 정지

이 태스크 정보

디버깅하는 애플리케이션이 실행 중일 때 일시중단 조치(일시중단 아이콘)(Ctrl+F8)를 사용하여 애플리케이션 또는 애플리케이션 내의 개별 스레드를 정지할 수 있습니다. 이 조치를 사용할 때 프로세스가 선택된 경우, 프로세스의 모든 스레드가 중지됩니다. 디버그 엔진이 개별 스레드의 일시중단 및 재개를 지원하며 스레드가 선택된 경우, 해당 스레드만 중지됩니다. 이 지원은 버전 11.1 이상의 디버그 엔진인 경우에만 사용할 수 있습니다. 이 애플리케이션의 모든 스레드는 재개 조치가 실행될 때까지 일시중단 상태에 있습니다. 일시중단 조치를 실행하면 디버그 엔진이 SIGSTOP을 디버깅하는 프로그램에 보냅니다.

정지 조치는 런어웨이 프로세스가 실행 중이지만 중단점에 도달하지 않는 경우 유용합니다. 애플리케이션을 정지하여 다시 제어할 수 있습니다. 프로그램을 정지하면 주로 편집기의 디스어셈블리 보기에서 중지됩니다.

프로그램 전체 단계 제어

이 태스크 정보

스레드를 일시중단하면 단계 제어는 전체 프로그램 실행에서 행별로 단계 제어를 할 수 있습니다. 단계 오퍼레이션 수행 중에 중단점 또는 이벤트가 발생하면, 발생한 중단점 또는 이벤트에서 실행이 일시중단되고 단계 오퍼레이 종료됩니다. 단계 명령을 사용하여 프로그램 전체를 한번에 하나의 지시사항 또는 지점에서 단계 제어할 수 있습니다.

다음과 같은 단계 명령을 사용할 수 있습니다.

  • Step Over(Step Over 아이콘)(F6): step over를 실행하면, 프로그램이 다음 소스 행까지 실행됩니다.
  • Step Into(Step Into 아이콘)(F5): step into를 실행하면, 프로그램이 다음 명령문까지 실행됩니다. 현재 행에 다른 함수가 있으면 디버거가 그 함수에서 중지됩니다.

    이 명령의 동작은 단계 필터 사용 조치(단계 필터 사용/Step Debug 아이콘)(Shift+F5)의 영향을 받습니다. 필터가 꺼져 있으면(누름 단추가 선택되지 않음) 호출된 함수에 디버그 정보가 없더라도 디버거가 이 함수에서 중지되며 디스어셈블리가 표시되어야 합니다. 핅터가 켜져 있으면(누름 단추가 선택됨) 소스를 표시할 수 있는 경우에만 호출된 함수에서 디버거가 중지됩니다. 소스를 표시할 수 없는 경우 Step Over가 실행된 것처럼 작동됩니다. DER_DBG_ STEP_DEBUG 디버그 엔진 환경 변수는 단계 필터 사용 조치의 동작에 영향을 줍니다. 디버그 엔진 환경 변수에 대한 정보는 관련 항목을 참조하십시오.

    참고: PL/I 및 COBOL의 경우, 일반적으로 step into 조치가 step though 필터 조치가 항상 설정되어 있는 것처럼 작동합니다. 해당 언어로 작성된 프로그램을 디버깅하는 경우, 디버거가 소스 코드에서 중지하도록 시도합니다.
  • Step Return(Step Return 아이콘)(F7): step return을 실행하면, 프로그램이 현재 함수 호출 직후에 호출 프로그램의 지점까지 실행됩니다. 일반적으로 호출 명령 뒤에 오는 위치에서 중지됩니다. 호출 프로그램에 디버그 정보가 있는 경우 이 정보는 소스 행 중간에 있습니다.
  • 애니메이션 step into: 이 조치를 실행하면 디버거가 step into 조치를 반복적으로 실행합니다. 애니메이션 step into 조치를 다시 선택하여 각 단계 사이의 지연을 제어할 수 있습니다.

피드백