>일반적인 문제 >소프트웨어 디버깅의 목적은 무엇입니까?

소프트웨어 디버깅의 목적은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-06-10 15:54:4116577검색

소프트웨어 디버깅의 목적은 오류를 수정하는 것입니다. 소프트웨어 디버깅은 준비된 프로그램을 실제 작동에 투입하기 전에 수동으로 테스트하거나 프로그램을 컴파일하여 문법적, 논리적 오류를 수정하는 과정으로 컴퓨터 정보 시스템의 정확성을 보장하는 데 필수적인 단계입니다.

소프트웨어 디버깅의 목적은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

소프트웨어 디버깅의 목적은 오류를 수정하는 것입니다.

소프트웨어 디버깅의 개념

소프트웨어 디버깅은 일반적으로 소프트웨어 결함을 재현하고, 문제의 근본 원인을 찾아내고, 최종적으로 문제를 해결하는 과정을 말합니다. 소프트웨어 디버깅에는 일반적으로 다음과 같은 두 가지 정의가 있습니다.

  • 정의 1:

    소프트웨어 디버깅은 소프트웨어 프로그램의 오류를 발견하고 제거하는 것입니다. 디버깅된 프로그램의 실행 프로세스는 볼 수 있도록 일부 방법을 통해 제어할 수 있습니다. 및 디버깅된 프로그램의 실행 상태를 수정하는 방법. 이 정의에서 소프트웨어 테스팅은 옥스포드 사전의 디버깅 정의와 유사한 소프트웨어 디버깅의 일부입니다. 옥스포드 사전에서 디버깅의 정의는 "컴퓨터 하드웨어나 소프트웨어의 오류를 식별하고 제거하는 프로세스"입니다.

  • 정의 2:

    디버깅은 성공적인 테스트를 수행한 후에 수행되는 작업입니다. 소위 성공적인 테스트는 프로그램이 예상한 기능을 달성하지 못했다는 것을 증명할 수 있음을 의미합니다. 디버깅은 성공적인 테스트 사례 실행과 문제 발견에서 시작하는 두 단계로 구성됩니다. 첫 번째 단계는 프로그램에서 의심스러운 오류의 정확한 성격과 위치를 확인하는 것입니다. 이 정의에서 소프트웨어 테스트는 디버깅 작업과 분리됩니다.

소프트웨어 디버깅의 의미

소프트웨어 디버깅은 컴파일된 프로그램을 수동으로 테스트하거나 프로그램을 컴파일하여 실제 작업에 투입하기 전에 문법적 오류와 논리적 오류를 수정하는 과정입니다. 이는 컴퓨터 정보 시스템의 정확성을 보장하기 위한 필수 단계입니다. 컴퓨터 프로그램이 컴파일된 후에는 테스트를 위해 컴퓨터로 보내야 합니다. 테스트 중 발견된 오류를 바탕으로 추가 진단을 실시하여 원인과 구체적인 수정 위치를 찾아냅니다.

디버깅이라는 용어는 다양한 의미를 가질 수 있지만 가장 말 그대로 코드에서 오류, 예외 및 버그를 제거하는 것을 의미합니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 예를 들어 코드에서 입력 오류를 검색하거나 코드 분석기를 사용하여 디버깅할 수 있습니다. 성능 프로파일러를 사용하여 코드를 디버깅할 수 있습니다. 또는 디버거를 사용하여 디버깅할 수 있습니다.

소프트웨어 디버깅의 기본 과정

정의 1에 따르면, 기본 프로세스 소프트웨어 시스템 디버깅의 방법은 다음과 같습니다. 편집 프로그램을 사용하여 컴파일된 소스 프로그램을 특정 쓰기 형식으로 컴퓨터에 보냅니다. 편집 프로그램은 프로그램을 추가, 삭제 또는 수정합니다. 들어오는 소스 프로그램을 기계어로 번역합니다. 즉, 컴파일러를 사용하여 소스 프로그램의 문법을 확인하고 문법 규칙을 준수하는 소스 프로그램 명령문을 컴퓨터가 인식할 수 있는 "언어"로 번역합니다. 컴파일러로 확인한 결과 문법 오류가 발견되면 편집 프로그램을 이용하여 소스 프로그램의 문법 오류를 수정한 후, 문법 오류가 없어질 때까지 다시 컴파일해야 합니다. 컴퓨터에 있는 연결 프로그램을 이용해 번역된 컴퓨터 언어 프로그램을 연결하고, 실제로 컴퓨터가 실행할 수 있는 프로그램으로 만들어 보세요. 연결 과정에서는 일반적으로 연결 오류가 발생하지 않습니다. 연결 오류가 발생하면 서브루틴 호출에 혼동이 있거나 소스 프로그램에서 잘못된 매개변수 전송 등의 문제가 있음을 의미합니다. 이때 편집프로그램을 이용하여 소스프로그램을 수정한 후 컴파일하고 연결하는 과정을 연결오류가 없을 때까지 반복해야 합니다.

  • 수정된 프로그램의 시험 계산을 수행할 때 여러 가지 시뮬레이션 데이터를 가정하여 시험 실행하고 출력 결과를 수동 처리의 올바른 결과와 비교할 수 있습니다. 차이가 있다면 컴퓨터 프로그램에 논리적 오류가 있다는 뜻이다. 프로그램이 크지 않으면 수동 방법을 사용하여 컴퓨터를 시뮬레이션하여 소스 프로그램의 이러한 데이터를 수정하고 처리할 수 있습니다. 프로그램이 상대적으로 크면 수동 시뮬레이션은 현재로서는 작동하지 않습니다. 컴퓨터에서 단일 단계 실행, 한 단계 단계 추적 프로그램 실행. 문제가 발견되면 편집 프로그램을 사용하여 소스 프로그램을 수정하고, 논리적 오류가 없을 때까지 컴파일, 링크, 실행을 계속해야 합니다. 완료 후 컴파일할 수도 있습니다.

  • 정의 2에 따르면 소프트웨어 시스템 디버깅의 기본 프로세스는 다음과 같습니다. 소프트웨어 테스트를 통해 발견된 문제

    • 문제 위치: 문제가 발생할 수 있는 프로그램 세그먼트의 위치를 ​​결정합니다. 원인 찾기: 분석 해당 코드 및 원인 파악 결함 문제의 내부 성격 이유;

    • 설계 솔루션: 소프트웨어 결함 문제에 대한 솔루션 제안;

    • 코드 수정: 설계 계획에 따라 프로그램 코드를 수정합니다.

    • 검증 및 검증: 검토, 분석, 테스트와 같은 기술을 사용하여 결정합니다. 오류가 제거되었는지, 새로운 오류가 발생했는지 여부.

    • 문제가 해결될 때까지 위의 6단계를 반복적으로 진행합니다. 소프트웨어 디버깅의 기본 프로세스는 그림 1에 나와 있습니다.

    이 단계에서는 문제 위치와 원인을 찾는 것이 소프트웨어 디버깅의 핵심 측면입니다. , 그리고 그들의 작업량이 전체 작업량의 90% 이상을 차지합니다. 소프트웨어 디버깅은 시간이 많이 걸리고 힘들며 숙련된 작업입니다. 현재 소프트웨어 디버깅에서 문제 위치에 대한 많은 연구가 진행되고 있습니다. 정의 1의 프로세스는 일상적인 개발 및 테스트 작업에 더 적합하고, 정의 2의 프로세스는 테스트, 특히 소프트웨어 출시 또는 출시 후 문제 해결과 관련된 작업에 더 적합하다는 것을 알 수 있습니다.

    소프트웨어 디버깅의 기본 기능

    • 광범위한 상관 관계
      디버거에는 강력한 기본 컴퓨터 지식(운영 체제, 개발 언어, 도구 등 포함)과 비즈니스 문제 도메인 지식에 대한 숙련도가 필요합니다.
    • 어렵습니다
      어려운지 아닌지는 '광범위한 상관관계'를 통해 알 수 있습니다. 물론, 직면한 구체적인 문제와 디버거의 품질에 따라서도 달라집니다
    • 완료 시간을 예측하기 어렵습니다
      이 시간은 특정 문제 분야의 전문가가 없고, 전반적인 소프트웨어 아키텍처와 코드에 대한 이해와 친숙함.

    소프트웨어 디버깅의 분류

    • 디버깅 대상의 시스템 환경에 따른 분류: Windows에서의 소프트웨어 디버깅, Linux에서의 소프트웨어 디버깅, Dos에서의 소프트웨어 디버깅 등
    • 대상의 실행 방법에 따라 코드:
      스크립트 프로그램 - 스크립트 디버거 行 컴파일 프로그램 수행:
      먼저 중간 코드로 컴파일한 후 현재 CPU의 대상 코드(예: C# 개발된 .NET 프로그램)로 동적으로 컴파일 - 코드 프로그램(C/C ++ ) - 로컬 디버깅
      에는 대상 코드의 실행 모드에 따라 위의 두 가지 -하이브리드 디버깅

      이 있습니다: 사용자 모드 디버깅, 커널 모드 디버깅
    • Windows와 같은 멀티 태스킹 운영 체제에서는 보안 및 순서를 위해 시스템은 낮은 권한 수준의 사용자 모드(User Mode)와 높은 권한 수준의 커널 모드(Kernel Mode)라는 두 가지 실행 모드를 정의합니다.
    • 응용 프로그램 코드는 사용자 모드에서 실행되며 운영 체제의 커널, 실행 본문 및 대부분의 장치 드라이버는 커널 모드에서 실행됩니다.

      소프트웨어 단계에 따라: 개발 단계 디버깅, 제품 단계 디버깅(구분선은 제품의 공식 릴리스입니다)
    • 디버거와 디버깅 대상의 상대적 위치에 따라: 로컬 디버깅, 원격 디버깅
    • 디버깅 대상의 활동에 따라: 활성 대상 디버깅, 덤프 파일 디버깅
    • 더 많은 관련 지식을 보려면
    FAQ

    칼럼을 방문하세요!

    위 내용은 소프트웨어 디버깅의 목적은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.