2013-05-09 2 views
2

У меня есть функция Matlab, которая запускается в несколько тысяч строк кода. При определенных условиях он ломается. Я также могу, отлаживать код и запускать шаг за шагом.Номер строки печати в Matlab

Итак, я попытался захватить блок в Matlab, чтобы обработать ошибку. В дополнение к этому, можно ли записывать и номер строки кода.

Для примера:

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

Любая идея, как это можно реализовать?

ответ

4

Попробуйте это. Это будет печатать номера строк вместе с полным стеком.

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

Позвольте мне попробовать это .. Большое спасибо Harshal – Kiran

2

Вы также можете рассмотреть возможность использования

>> dbstop if error 

перед запуском кода: таким образом, когда возникает ошибка, Matlab создает отладки точки останова и позволяют отлаживать на ошибке.

+1

Если ошибка возникает внутри try/catch, им понадобится 'dbstop if all error'. – Edric

+0

@ Edric действительно, мое намерение заключалось в замене 'try'-'catch' на' dbstop if error', поскольку оно предназначено только для целей отладки ... – Shai

+1

@Edric Является ли 'if all error' документированным? Я могу найти только «if error» и «if caught 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'])

Смежные вопросы