How to fix freezing when mouse over OpenCV Mat class in Visual Studio 2017


Visual Sutio 2017 최신 버전, 그러니까 정확하게는 VS2017 15.7.x 버전에서 OpenCV 코드를 작성하다보면 마우스가 Mat 클래스 위로 올라갈 때 Visual Studio가 멈추는 현상이 발생합니다. 코드 편집이 불가능한 상태가 되어서 Visual Studio를 죽였다가 다시 실행을 해야 하는데요...


오늘 Visual Studio 2017 15.7.5 버전으로 업그레이드를 하길래 혹시나 고쳐졌나 확인해봤지만, 여전하네요. ㅎㅎ


이 현상은 Visual Studio에서 사용하는 IntelliSense 기능때문에 발생합니다. 그러므로 간단하게는 IntelliSense 기능을 끄면 Visual Studio 2017이 멈추는 현상은 발생하지 않습니다. IntelliSense 기능을 끄려면 메뉴에서 [도구] -> [옵션] / [텍스트 편집기] -> [C/C++] -> [고급] 선택 후 IntelliSense의 [자동 요약 정보]를 false로 설정하면 됩니다.


그런데 경우에 따라서는 IntelliSense 기능을 달랑 Mat 문제 때문에 끄는 것이 아쉬울 때도 있습니다. 그런 경우라면 OpenCV 소스 코드에서 Mat 클래스 주석 부분을 일부 삭제하는 방법을 사용할 수도 있습니다.


Mat 클래스는 <opencv-src>/include/opencv2/core/mat.hpp 파일에 정의되어 있습니다. 이 파일에서 Mat 클래서 정의 바로 위에 엄청나게 긴 주석이 적혀 있는데, 이 주석을 IntelliSense가 해석하다가 뻗어버리는 것으로 판단이 되네요. 그러므로 이 주석의 대부분을 과감히 삭제하면 멈추는 현상이 발생하지 않습니다. 아래 그림을 보시죠.


원래 Mat 클래스 주석이 (OpenCV 3.4.0 기준) 588라인부터 778라인까지 작성되어 있었는데요, 위 그림처럼 대부분을 지워버리는 겁니다. 그러고나서 OpenCV 소스 코드에서 Mat 클래스 위에 마우스를 올려놓으면 간략하된 Mat 주석만 풍선도움말처럼 화면에 나타납니다.


참 쉽죠? :-)






Posted by kkokkal
: