Перерыв на изменение значения переменной
Как и другие вопросы здесь, как этот.
Есть ли способ прервать изменение значения переменной в любом отладчике JavaScript? (например, инструменты разработчика IE, Visual Studio или Firebug)?
Я предполагаю, что это что-то вроде "наблюдаемой переменной", но я хочу иметь возможность видеть колл-стэк и приостанавливать его, когда действительно происходит изменение переменной.
Альтернативный подход может заключаться в том, чтобы переопределить настройку значения с помощью пользовательского установщика и установить в нем точку останова, но, к сожалению, это не сработает для IE AFAIK.
UPDATE
Похоже, что этот тип поведения доступен, по крайней мере, для неуправляемого кода , написанного на C++. Поэтому я подумал, что, возможно, движок JavaScript, написанный на C++ (Google V8), может иметь что-то похожее, но это не так. кажется, есть то, что я хочу либо.
Ответы
Ответ 1
Вам даже не нужна IDE - вы можете использовать "Object.watch()":
Учебник по Object.Watch
Если вы используете какой-либо отладчик, я настоятельно рекомендую Firebug. Для всех ваших нужд Javascript, HTML и CSS :-):
http://getfirebug.com/javascript
================================================== =========
Обновление для 2019 года:
Object.Watch - Древняя История. По совпадению, он недоступен в большинстве современных браузеров.
В настоящее время моим любимым инструментом отладки JS является Chrome Developer Tools.
Моя любимая JS IDE (для Angular,.Net Core и т.д.) - это код Microsoft Visual Studio (MSVC).
С помощью отладчика Chrome вы можете выполнить любую "ожидаемую" операцию отладки, в том числе установить часы, как и в FF Firebug.
Отладчик Chrome хорошо интегрирован с IDE MSVC.
Оба являются "бесплатными" (по крайней мере, "бесплатными, как в пиве"); оба хорошо работают на Windows, Mac и Linux.
Ответ 2
У меня есть успех в этой библиотеке в Chrome, и он поддерживает все основные браузеры.
https://gist.github.com/eligrey/384583
Просто включите файл .js, затем вызовите:
yourObject.watch('someProperty', function() {
doWhatYouWant();
debugger;
console.write('this too');
alert('Object Changed'); //etc
});
Ответ 3
Я не знаю, не понял ли я ваш вопрос. Если вы хотите посмотреть выражение и остановиться, когда оно достигнет определенного значения, а в сеансе отладки js в инструментах разработчика Chrome, это довольно тривиально.
Вы можете просто поставить точку останова в строке, где значение, которое вы хотите проверить, затем щелкнуть правой кнопкой мыши на нем и выбрать "Изменить точку останова...". Появится диалоговое окно с запросом выражения, где выполнение остановится, когда его значение будет истинным.
Например, предположим, что у вас есть цикл, и вы добавляете одну единицу к переменной внутри нее и хотите остановить выполнение, когда переменная равна 3. Выражение в цикле будет выглядеть так:
n = i++;
Вы должны установить точку останова на этой строке, а выражение для просмотра (после запроса "Изменить точку останова..." ) будет n == 3
. При запуске вашего кода он остановится там, когда ваша переменная достигнет этого значения.
Вы заметите, что ваше условие установлено, потому что ваша точка останова становится оранжевой, а не синей.