IMCAT.DEV
로그인 가입
Lua 입문 도구

Lua 기본적인 디버깅 기법

Lua 기본적인 디버깅 기법 — 초급

기본적인 디버깅 기법

1. 도입 (왜 배워야 하는가)

프로그래밍을 하다 보면 예상치 못한 오류나 버그에 직면하게 됩니다. 이러한 문제를 해결하는 과정이 바로 디버깅입니다. 디버깅 기술이 중요해지는 이유는, 실무에서 작성한 코드가 실제로 작동하는지 확인하고, 문제가 발생했을 때 빠르게 원인을 파악하고 수정할 수 있어야 하기 때문입니다. 디버깅을 제대로 하지 않으면, 소프트웨어의 품질이 떨어지거나 사용자가 불편을 겪을 수 있습니다. 예를 들어, 쇼핑몰 웹사이트에서 결제 시스템에 오류가 발생하면 사용자가 구매를 포기할 수 있습니다. 이러한 문제를 조기에 발견하고 해결하는 것이 중요합니다.

2. 핵심 개념 설명

디버깅이란, 코드에서 발생하는 오류를 찾아내고 수정하는 과정을 말합니다. 이를 이해하기 쉽게 비유하자면, 집에서 문제가 생겼을 때(예: 전구가 안 켜진다) 원인을 찾아내고 문제를 해결하는 과정과 비슷합니다. 이때 어떤 도구(예: 전구 테스트기)를 사용하여 문제의 원인을 찾는 것처럼, 프로그래밍에서도 다양한 도구와 기법을 사용하여 문제를 해결합니다.

관련 용어 정리

용어설명
버그프로그램의 의도하지 않은 동작이나 오류
로그프로그램의 실행 정보를 기록한 것
스택 트레이스오류 발생 시 함수 호출 순서를 보여주는 정보

3. 기본 코드 예제

디버깅을 위한 가장 기본적인 기법 중 하나는 print 문을 사용하는 것입니다. 이 방법을 통해 코드의 실행 흐름이나 변수 값을 확인할 수 있습니다.

function add(a, b)
    print("a: " .. a .. ", b: " .. b) -- a와 b의 값을 출력
    return a + b
end

result = add(5, 10)
print("Result: " .. result) -- 결과를 출력

실행 결과

a: 5, b: 10
Result: 15

코드 한 줄씩 동작 설명

  1. function add(a, b): 두 개의 매개변수를 받는 함수를 정의합니다.
  2. print("a: " .. a .. ", b: " .. b): 함수가 호출될 때 매개변수 a와 b의 값을 출력합니다.
  3. return a + b: 두 매개변수의 합을 반환합니다.
  4. result = add(5, 10): add 함수를 호출하고 결과를 result에 저장합니다.
  5. print("Result: " .. result): 최종 결과를 출력합니다.
  6. 4. 실전 활용 예제

    예제 1: 사용자 입력 처리

    쇼핑몰에서 사용자로부터 입력 받은 가격이 유효한지 확인하는 경우입니다.

    function getDiscountedPrice(price, discount)
        print("Original Price: " .. price)
        if price < 0 then
            print("Error: Price cannot be negative!")
            return nil
        end
        local discountedPrice = price - (price * discount / 100)
        print("Discounted Price: " .. discountedPrice)
        return discountedPrice
    end
    
    getDiscountedPrice(100, 20)
    getDiscountedPrice(-50, 20)

    상황 설명: 사용자가 입력한 가격이 음수일 경우 오류 메시지를 출력하고, 유효하지 않은 가격을 처리합니다.

    예제 2: 배열 처리

    쇼핑몰의 장바구니에서 제품의 가격을 합산하는 경우입니다.

    function calculateTotal(cart)
        local total = 0
        for i, item in ipairs(cart) do
            print("Item " .. i .. ": " .. item.price)
            total = total + item.price
        end
        print("Total price: " .. total)
        return total
    end
    
    cart = { {price = 50}, {price = 30}, {price = 20} }
    calculateTotal(cart)

    상황 설명: 장바구니에 담긴 각 제품의 가격을 출력하고, 총합을 계산하여 출력합니다.

    5. 흔한 실수와 주의사항

    실수 1: 출력문을 깜빡 잊기

    코드에서 중요한 변수 값을 확인하기 위해 print 문을 추가해야 하는데, 이를 잊어버리는 경우가 많습니다.

    잘못된 코드

    function calculate(a, b)
        return a + b
    end

    올바른 코드

    function calculate(a, b)
        print("Calculating: " .. a .. " + " .. b)
        return a + b
    end

    실수 2: 잘못된 조건문 사용

    조건문에서 잘못된 비교를 하여 오류가 발생할 수 있습니다.

    잘못된 코드

    if price = 0 then
        print("Price cannot be zero!")
    end

    올바른 코드

    if price == 0 then
        print("Price cannot be zero!")
    end

    6. 정리

    • 디버깅은 코드에서 발생하는 오류를 찾고 수정하는 과정입니다.
    • print 문을 사용하여 변수의 값을 확인하고 프로그램의 흐름을 추적할 수 있습니다.
    • 사용자 입력 처리, 배열 처리 등의 상황에서 디버깅 기법이 유용합니다.
    • 흔히 하는 실수로는 출력문을 잊거나 조건문에서 잘못된 비교를 하는 경우가 있습니다.

다음에 학습하면 좋은 주제는 Lua의 오류 처리 기법입니다. 이를 통해 예외 상황을 보다 체계적으로 다룰 수 있습니다.