Сохраняйте фокус в окне командной строки при отладке MATLAB

#debugging #matlab #ide

#отладка #matlab #ide

Вопрос:

Часто в MATLAB я включаю «автоматическую» отладку с помощью dbstop if error . При возникновении ошибки функция переходит в режим отладки, и я могу запросить переменные в окне командной строки и точно увидеть, что происходит. Очень полезно.

Однако, когда это происходит, фокус переключается на редактор. Мне это кажется нелогичным; мы находимся в режиме отладки, поэтому я хочу выяснить, что происходит, а не смотреть на код (который я уже вижу в соседнем окне). Я всегда сразу возвращаюсь к командному окну.

Итак, мой первый вопрос: есть ли какой-либо смысл в доступе к редактору на этом этапе? Что я могу с пользой сделать в редакторе, когда мой скрипт потерпел крах?

И, во-вторых: если я захочу, могу ли я изменить поведение MATLAB по умолчанию, чтобы сохранить фокус в окне командной строки?

Ответ №1:

К вашему второму вопросу:

Если вы используете среду рабочего стола MATLAB, просто снимите флажок «Открывать файлы при отладке» в меню «Debug».

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

ПРИМЕЧАНИЕ: Редактирование этого файла полностью не поддерживается. Делайте это на свой страх и риск.

  1. Откройте файл из командной строки MATLAB,

    >> edit([prefdir '/matlab.prf'])

    Или используйте prefdir команду в MATLAB, чтобы найти каталог, а затем откройте файл в любом редакторе, который вы предпочитаете.

  2. Найдите строку, которая гласит

    EditorGraphicalDebugging=Btrue

  3. Измените его на чтение

    EditorGraphicalDebugging=Bfalse

    Если строка не существует, добавьте ее в файл.

  4. Перезапустите MATLAB.

Комментарии:

1. Чтобы немного упростить это, вы можете использовать внутренний java-метод Matlab для установки этого параметра программно: com.mathworks.services.Prefs.setBooleanPref('EditorGraphicalDebugging',false)

Ответ №2:

Вы можете использовать стек вызовов, чтобы увидеть, как вы пришли к конкретной позиции ошибки. Конечно, вы можете использовать dbup и dbdown для этого в окне командной строки, но в редакторе это намного проще.

Кроме того, просмотр переменных (и их значений при наведении курсора мыши) в контексте кода, вызвавшего сбой, намного лучше для понимания основной причины ошибки, чем просто просмотр статических значений.

Ответ №3:

Я могу ответить только на ваш первый вопрос.

Что можно сделать в редакторе:

  • Наведите курсор мыши на переменную, после чего появится окно быстрого просмотра.
  • Любое действие, которое вы можете выполнять, когда не находитесь в режиме отладки, обрабатывая функцию как скрипт — запуск строки (выделите F9), запуск блока кода и т.д.