2013-05-09 4 views
2

나는 수천 줄의 코드로 실행되는 Matlab 함수를 가지고 있습니다. 특정 조건 하에서, 그것은 깨고있다. 또한 코드를 디버그하고 단계별로 실행할 수 있습니다.Matlab의 인쇄 라인 번호

그래서, 나는 오류를 처리하기 위해 Matlab에서 블록을 잡으려고했다. 이 외에도 코드의 줄 번호도 캡처 할 수 있습니다. 예를 들어

는 :

try 
Error here <----- 
catch err 
disp(['Error occured on line No ' num2str(lineNo]) 
end 

어떤 생각, 그것을 어떻게 구현 될 수 있는가?

답변

4

시도해보십시오. 그러면 전체 스택과 함께 줄 번호가 인쇄됩니다. 오류가 발생하면 matlab에 디버그 중단 점을 만들고,이 방법과 오류에서 디버깅 할 수 있습니다 :

try 
    %some code; 
catch exc 
    getReport(exc, 'extended') 
end 
+0

날이를 해보자을 .. 덕분에 많은 Harshal – Kiran

2

또한 코드를 실행하기 전에

>> dbstop if error 

사용을 고려할 수 있습니다.

+1

경우] try/catch 내부에서 에러가 발생하면,'dbstop all error'가 필요합니다. – Edric

+0

@Edric 참으로 디버깅 목적으로 만 사용 되었기 때문에 내 의도는'try'-'catch '를'dbstop if error'로 대체하는 것이 었습니다 ... – Shai

+1

@Edric'모든 오류가 문서화되어 있습니까? 나는'if error'와'catch if error' 만 발견 할 수 있습니다. 내가 뭔가를 놓치지 않았다면 문서화해야할까요? –

0

당신은이 방법으로 시도 할 수 있습니다 :

try 
    Error here <-------------- 
catch err 
    disp([err.identifier]); 
    disp([err.message]); 
    for e=1:length(err.stack) 
     disp(['Error in ' err.stack(e).file ' at line ' num2str(err.stack(e).line)]); 
    end 
end 
0

이 줄 번호를 인쇄하려면이 명령을 사용할 수 있습니다

printf(['Line number ' num2str(dbstack.line) '\n'])