Странное поведение отладчика
Добрый день. У меня вопрос про странное поведение Отладчика. Может кто-то сталкивался и уже понял причину. Будет здорово если поделитесь.
Дело в том, что Отладчик останавливается ниже строки где это ожидается. В прикрепленном снимке экрана видно, что в начале он должен остановиться на строке 45 где написана команда debugger;, а затем вернуть End... и завершить функцию. На деле Отладчик останавливается на строке 56 в if в который передан undefined. То есть этот код дважды недостижим. ![]() Такое поведение распространяется не на одну функцию, а на все функции проекта (которые раньше работали верно). При этом это не ошибка Хрома: FF ведёт себя аналогично. Это случается уже второй раз. В первый раз для исправления ошибки я поставил свежую копию Реакта и залил файлы (не помогло), затем закомментировал код написанный за несколько дней (не помогло), потом закомментировал половину кода (не помогло). После закомментировал весь проект и тогда Отладчик стал работать ожидаемо. Три дня ушло на расскомментирование и проверки всех функций. После этого я написал еще немного кода и проблема появилась снова. |
Скорее всего тема останется без ответа
не все умеют гадать по фотографиям =). |
Цитата:
Я не думаю что дело в коде. Отладчик в принципе не может работать так, как показано у меня. Если бы там была ошибка (а её нет), то отладчик как минимум бы остановился на ошибке. А он игнорируя вообще любой код останавливается на несколько строк ниже где он должен остановиться. |
Как я писал такое поведение неожиданно появляется во всех функциях. Даже если закомментировать весь недавний код, то проблема останется.
|
MallSerg, у вас проблемы с распознаванием картинок?
Andrew K, MallSerg, там видно, что блок на строках №№53–56 не может вообще быть выполнен из-за условия. Но даже если undefined где-то переопределён (его можно переопределить!), то должно произойти исключение на строке №55, поскольку у null нет никаких свойств. Я предполагаю, что в консоли не была напечатана «1», и должна быть подсвечена именно строка №45. Я думаю, что такое произошло из-за ошибки в source map. Возможно у вас раньше генерировались source map, а сейчас нет. Предполагаемое решение — удалите все сгенерированные сборщиком файлы и постройте их заново! |
>>
А я гадаю что до отладчика дело даже не дошло и дебаггер тут совсем не причем в коде есть ошибки и движек не может скомпилировать текущую функцию (единицу трансляции). И выполнение не на паузе стоит а Andrew K, перешел по клику на ошибку в консоли. |
Тоже возможно, MallSerg!
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Изначально проект был создан через create-react-app. Сейчас собрал через Вебпак. Выяснил, что для сборки карт кода без описанной ошибки свойство devtool (в файле настройки) нужно ставить в eval. Вроде этого:
module.exports = { mode: 'development', module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: [ { loader: 'babel-loader' }, { loader: 'source-map-loader', options: { enforce: "pre" } } ] } ] }, devtool: 'eval', } В create-react-app этот параметр установлен в source-map. В этом случае будет похожее странное поведение Отладчика. Большое спасибо Маллеусу за наводку. |
Часовой пояс GMT +3, время: 10:50. |