#debugging #matlab #ide
#отладка #matlab #ide
Вопрос:
Часто в MATLAB я включаю «автоматическую» отладку с помощью dbstop if error
. При возникновении ошибки функция переходит в режим отладки, и я могу запросить переменные в окне командной строки и точно увидеть, что происходит. Очень полезно.
Однако, когда это происходит, фокус переключается на редактор. Мне это кажется нелогичным; мы находимся в режиме отладки, поэтому я хочу выяснить, что происходит, а не смотреть на код (который я уже вижу в соседнем окне). Я всегда сразу возвращаюсь к командному окну.
Итак, мой первый вопрос: есть ли какой-либо смысл в доступе к редактору на этом этапе? Что я могу с пользой сделать в редакторе, когда мой скрипт потерпел крах?
И, во-вторых: если я захочу, могу ли я изменить поведение MATLAB по умолчанию, чтобы сохранить фокус в окне командной строки?
Ответ №1:
К вашему второму вопросу:
Если вы используете среду рабочего стола MATLAB, просто снимите флажок «Открывать файлы при отладке» в меню «Debug».
Если вы используете MATLAB без графического рабочего стола, вы можете изменить это предпочтение, изменив свой matlab.prf
файл. В этом файле хранятся настройки, заданные в графическом интерфейсе. Описанный выше пункт меню вносит те же изменения, что и описанный ниже ручной процесс.
ПРИМЕЧАНИЕ: Редактирование этого файла полностью не поддерживается. Делайте это на свой страх и риск.
-
Откройте файл из командной строки MATLAB,
>> edit([prefdir '/matlab.prf'])
Или используйте
prefdir
команду в MATLAB, чтобы найти каталог, а затем откройте файл в любом редакторе, который вы предпочитаете. -
Найдите строку, которая гласит
EditorGraphicalDebugging=Btrue
-
Измените его на чтение
EditorGraphicalDebugging=Bfalse
Если строка не существует, добавьте ее в файл.
-
Перезапустите MATLAB.
Комментарии:
1. Чтобы немного упростить это, вы можете использовать внутренний java-метод Matlab для установки этого параметра программно:
com.mathworks.services.Prefs.setBooleanPref('EditorGraphicalDebugging',false)
Ответ №2:
Вы можете использовать стек вызовов, чтобы увидеть, как вы пришли к конкретной позиции ошибки. Конечно, вы можете использовать dbup
и dbdown
для этого в окне командной строки, но в редакторе это намного проще.
Кроме того, просмотр переменных (и их значений при наведении курсора мыши) в контексте кода, вызвавшего сбой, намного лучше для понимания основной причины ошибки, чем просто просмотр статических значений.
Ответ №3:
Я могу ответить только на ваш первый вопрос.
Что можно сделать в редакторе:
- Наведите курсор мыши на переменную, после чего появится окно быстрого просмотра.
- Любое действие, которое вы можете выполнять, когда не находитесь в режиме отладки, обрабатывая функцию как скрипт — запуск строки (выделите F9), запуск блока кода и т.д.