반응형
백준 알고리즘을 풀다보니 이런 말이 있었다.
"이렇게 했더니 맞고 이렇게 했더니 틀린다"가 아니라 assert문으로 확실하게 확인해 주시기 바랍니다.
문제를 풀다보면 테스트케이스에서는 다 맞는데 막상 제출하면 틀리는 경우가 있다. 이 경우 문제에 오류가 있나 라고 생각하기 쉬운데 사실 문제에 오류가 있는것이 아니라 내 코드가 test case에서만 통과되는거지 다른 숨겨진 case에 대해서는 실패하는 경우이다.
즉, 내 소스에 디버깅이 확실히 되어있지 않다는 점이다.
확실하게 디버깅하기 위해서는 assert문으로 확실하게 확인해 달라고 하였는데 과연 assert가 무엇일까?
assert란 개발자들이 디버깅을 빠르게 하기위한 도구이다. 즉, 에러 검출용 코드이지 코드를 다 완성하고 동작할때 돌아가는 함수가 아니다.
assert는 log보다 더 효율적으로 사용될 수 있는데 이유는 버그가 발생한 위치, call stack등 여러 정보를 알 수 있기 때문이다.
또한 assert는 디버깅용 함수이기 때문에 Release 모드에서는 동작하지 않고 디버그 모드에서만 동작한다.
assert에 대한 구체적인 설명과 사용법은 다음을 참조하자.
https://blockdmask.tistory.com/286
https://dojang.io/mod/page/view.php?id=764
반응형
'Programming > C,C++' 카테고리의 다른 글
[C++ 소켓 스레드통신] 스레드클래스를 직접 만들고 소켓통신 구현하기 (0) | 2020.03.30 |
---|---|
[C/C++] 배열과 벡터 속도차이 비교 테스트 (0) | 2020.03.22 |
[C++] 2차원벡터 사용 예시 (0) | 2020.03.08 |
[C/C++, 시간측정법]C언어(visual studio) 시간측정법 (0) | 2020.02.11 |
[C/C++]C언어 소스 최적화(시간효율, 메모리효율성 증대) (0) | 2020.02.11 |