Сохраняйте фокус в окне команд при отладке MATLAB - PullRequest
3 голосов
/ 28 апреля 2011

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 28 апреля 2011

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

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

3 голосов
/ 29 апреля 2011

На ваш второй вопрос:

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

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

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

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

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

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

  2. Поиск строки, которая говорит

    EditorGraphicalDebugging=Btrue

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

    EditorGraphicalDebugging=Bfalse

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

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

2 голосов
/ 28 апреля 2011

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

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

  • Мышь при наведении на переменную, которая открывает окно «быстрого просмотра».
  • Любое действие, которое вы можете выполнить, не находясь в режиме отладки, рассматривая функцию как скрипт - запуск строки (выделение + F9), запуск блока кода и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...