이 글은 Visual Studio를 활용하여 MEX함수를 Debug하는 방법입니다.
일단 저의 환경설정은 아래와 같습니다.
(아래에 설명하는 방법은 버전과는 상관없이 작동합니다. 참고만 하세요)
- Windows 7(64bit)
- MATLAB R2016a
- Visual Studio 2013
실행 예제는 MATWORKS사에서 기본 적으로 제공하는 예제로 설명을 드리겠습니다.
첫 번째 소스는 MATLAB Command windows에서 아래와 같이 입력하시면 바로 보실수 있습니다.
>> edit([matlabroot '/extern/examples/mex/arrayProduct.c']);
두 번째 소스는 아래와 같습니다.
%% demo_arrayProduct.m
%% clear
clear all; close all; clc;
%% call arrayProduct
scalar = 5
A = [1.6, 2, 5.2]
B = arrayProduct(scalar, A)
위의 두 소스는 소스 목록에 보시면 링크 되어있으므로 다운 받으셔도 됩니다.
자, 이제 준비를 마쳤으므로 디버깅 (Debugging)하는 방법을 설명 드리겠습니다.
첫 번째, mex 파일을 디버깅할 수 있도록 빌드한다.
>> mex -g arrayProduct.c
두 번째, Visual Studio와 연결한다.
Visual Studio를 실행하시고, [DEBUG] -> [Attach to Process] 선택을 하시면 됩니다.
그 다음 MATLAB.exe을 더블클릭 해주시면 됩니다.
이제 파일을 선택해주시면 됩니다.
(모두들 잘 아시겠지만, 파일 선택은 [FILE] -> [Open] -> [File] 선택해 주시면 됩니다.)
여기서는 MEX파일을 선택해 줍니다.
(예제에서는 'arrayProduct.c'가 이에 해당됩니다.)
예제 파일이 열렸습니다.
저희들은 디버깅을 원하기 때문에 디버깅 포인트를 아래 그림과 같이 클릭해 주시면 됩니다.
(mex는 'mexFunction()'가 메인 이라고 보시면 되기때문에 이 함수 안에 찍으시면 됩니다.)
이제 실제적으로 MATLAB에서 디버깅을 시작하시면 '스텝 인'을 함수 'arrayProduct()'에서 누르시면 됩니다.
위와 같이 실행을 하시면 Visual Studio에서 바로 디버깅 포인터를 확인 하실 수 있습니다.
즐 코딩하세요~