Programming/Debug
-
[디버깅]Jupyter notebook 실행 했는데 no module 에러 뜨는 상황 해결Programming/Debug 2023. 11. 7. 19:06
문제 상황 cmder 또는 anaconda prompt 창에서 conda create -n ml python=3.8 activate ml conda install pandas jupyter notebook 이렇게 가상환경을 만들고 pandas 모듈을 설치 한 후 주피터 노트북을 실행하고 import pandas를 했는데 강의와는 다르게 나는 no module 에러가 발생했다. 문제 확인 import sys sys.executable 주피터 노트북 쉘에 위 코드를 입력해서 실행중인 경로를 확인한다. 프롬프트 창에 conda info --envs를 입력해서 가상환경 경로와 비교해준다. 그 결과 두 경로가 일치하지 않음을 확인했다. 해결 방법 프롬프트 창에 conda install jupyter 로 설치해준다..
-
yolo_v2_class.hpp 가 Debug mode에서 bad_alloc 예외 발생하는 문제 해결Programming/Debug 2023. 7. 17. 15:07
기존에 yolo_v2_class.hpp를 release모드에서 잘 사용하다가 메모리 leak확인을 위해 debug모드로 빌드가 필요했다. opencv까지 다시 빌드해서 디버깅까지는 성공했는데 실행하다가 중간에 Detector 초기화 부분에서 bad_alloc예외가 발생하였다.. 해결 방법 darknet 을 다운로드 받고 빌드한다. (cuda, cudnn은 이전에 잘 세팅되어있었다.) opencv 경로도 잘 입력해 준 후 cmake 빌드하면 build - darknet 위치에 yolo_cpp_dll.sln을 열어준다. 여기서 디버그 모드로 빌드하면 에러가 발생하는데, 01. 개발 환경 세팅하기. (Yolo - darknet) (tistory.com) Matching CUDA arch and CUDA gen..
-
C++ 프로그램에서 memory leak 발생한 사건 | 소멸자 사용하기Programming/Debug 2023. 7. 14. 19:07
내가 짠 프로그램에서 memory leak으로 인해 critical issue가 발생하였다. 그동안 알고리즘에만 집중하느라 흐린눈 하고 있던 부분인데 이번 기회로 메모리 체크를 하게 되었다. memory leak의 원인 비디오 input을 읽어와서 영상처리를 수행하고 그 결과를 output으로 저장하는 프로그램이다. 이 프로그램이 정상적으로 file make를 끝내면 메모리 누수가 일어나지 않았다. 문제는 중간에 에러가 리턴되는 경우였다. YOLO detector에서 사람이 없는 경우는 에러 리턴으로 중간에 함수를 탈출하도록 했는데, 이때 Frame transfer관련된 객체가 close되는 코드를 타지 않고 중간에 함수를 탈출한다. 메모리 해제가 되지 않은 채로 프로세스가 반복되면서 0.2~0.3GB씩..
-
[Visual Studio] yolo_v2_class 에러 해결 (LNK1120, LNK2001)Programming/Debug 2023. 6. 2. 14:20
같은 문제를 두번이나 헤메어서 기록합니다.. 환경 Visual Studio 2019 C++ OpenCV + yolo_v2_class.hpp 문제상황 링커 관련 오류... 분명히 dll 다 넣었고, 라이브러리 path랑 목록 다 확인했다... 반나절동안 해매다가 방법 찾아냄.. 해결방법 수정 전 (내가 만든 .h파일에서 헤더파일 include하는 부분) #include "yolo_v2_class.hpp" 수정 후 #include "yolo_v2_class.hpp" #ifdef DEBUG #pragma comment(lib, "yolo_cpp_dll.lib") #else #pragma comment(lib, "yolo_cpp_dll.lib") #endif 위와같이 라이브러리 입력 코드를 추가했더니 바로 잘 ..
-
Unit test 시 고려해야 할 사항Programming/Debug 2023. 3. 13. 21:30
업데이트 버전 배포를 앞두고, Unit test를 새로 설계할 필요성을 느꼈다. 기왕 새로 만드는 김에 Unit test에서 고려할 사항에 대해 차근차근 짚어보기로 했다. 아래는 chatGPT에게 unit test에서 고려할 사항을 질문한 답변이고, 색깔로 표시된 문장은 나의 추가적인 생각이다. 💻💬 Unit test는 개발자가 작성한 코드의 동작을 검증하는데 사용되는 테스트입니다. 코드를 변경하거나 수정할 때, 기존 코드가 제대로 작동하는지 검증할 때, 또는 새로운 코드가 올바르게 작동하는지 확인할 때 Unit test를 사용할 수 있습니다. 다음은 Unit test를 작성할 때 고려해야 할 사항입니다. 1. 테스트 대상 모듈 결정 Unit test를 작성할 때는 테스트 대상 모듈을 먼저 결정해야 합니..
-
Debug : API default값Programming/Debug 2023. 3. 7. 19:20
데몬 프로그램 배포 후 버그가 발생했다. 역시 약간의 찜찜함은 버그로 직행인가 보다. 근데 어쩔 수 없었던 게… 우리 쪽에서 할 수 있는 테스트는 다 했고 통합 테스트에서 발생한 거였다. 어쨌거나, 문제원인을 먼저 파악해 보면 json메세지로 받는 API를 추가했고, 나는 해당 API가 있으면 그 값을 받아서 계산하고, 없으면 원래대로 자체 계산값을 통해 프로그램 동작이 되도록 구성했다. 여기서 고려하지 않은 사항 때문에 문제가 되었다. 넘겨주는 쪽에서 defalut값을 0으로 설정한 것이다. defalut값이라는 것 자체를 고려하지 못한 미스였다. 나는 있거나, 없거나 둘 중 하나로만 생각했는데 API를 추가한 다른 팀에서는 항상 키 값이 존재하고, 데이터가 없을 때 defalut로 0으로 전달하게 한..
-
오늘의 오답노트 - 디버깅Programming/Debug 2023. 2. 22. 20:40
OpenCV 모듈 사용 시 단위를 알고 싶으면 사용한 모듈에서 F12를 눌러 헤더파일에 들어가 보면 나와있다. 디버깅에 대한 생각 진짜 잡기 힘든 버그라도 한 줄씩 지웠다가 테스트해보면 위치를 알 수 있다. 숫자 맞히기 게임처럼(up down게임?) 정답(버그 원인)을 점점 좁혀서 추적해 나간다. 정답이 47이라면.. 0~100까지의 숫자 중에 반인 50을 말했을 때, down 25를 말했을 때, up 이런 식으로 반씩 잘라서 추적.... 디버깅조차도 알고리즘을 사용하는 것이다. 버그 현상 원인 파악이 어려울 때 로그를 자세히! 보고 문제 위치를 파악한다. 원인은 분명히 있다. 최대한 원인 파악/디버깅 가능하도록 모든 데이터를 확인한다. dump뜨는 것을 귀찮게 생각하지 말자. 웬만한 코딩 문제는 머리를..