Подтвердить что ты не робот

Отладка MATLAB: лучший способ остановить код с определенным условием?

Когда я отлаживаю длинные фрагменты числового кода, часто хочу видеть значения переменных функции, если что-то происходит, или в конкретной итерации. Обычно я делаю:

function banana(platano)

% long stuff here

for ii=1:123456789
     % tons of maths
   if ii==45612
      stophere=1;    % I put a break point in this line of code
   end
end

Однако для этого мне нужно написать код в функции для отладки, и это выглядит не очень хорошо. Есть ли более разумный способ сделать это?

4b9b3361

Ответ 1

Один из способов: Условные точки останова. Вы можете добавить их, щелкнув правой кнопкой мыши по номеру строки и выбрав опцию "Set conditional Breakpoints...".

Пример:

введите описание изображения здесь

Как описано в комментариях к этому ответу, если вы хотите установить его с помощью командной строки, вы можете использовать

dbstop in filename at linenumber if condition 

В качестве примера:

dbstop in banana at 6 if ii==454345433

обратите внимание, что at linenumber и if condition являются необязательными.

Другие вещи

Еще один полезный инструмент отладчика разбивает программу, если была ошибка, используя dbstop if error, как показано в этом Q & A.

Благодаря @Dev-il, чтобы показать мне это!