Подтвердить что ты не робот

Перерыв на изменение значения переменной

Как и другие вопросы здесь, как этот.

Есть ли способ прервать изменение значения переменной в любом отладчике JavaScript? (например, инструменты разработчика IE, Visual Studio или Firebug)?

Я предполагаю, что это что-то вроде "наблюдаемой переменной", но я хочу иметь возможность видеть колл-стэк и приостанавливать его, когда действительно происходит изменение переменной.

Альтернативный подход может заключаться в том, чтобы переопределить настройку значения с помощью пользовательского установщика и установить в нем точку останова, но, к сожалению, это не сработает для IE AFAIK.

UPDATE Похоже, что этот тип поведения доступен, по крайней мере, для неуправляемого кода , написанного на C++. Поэтому я подумал, что, возможно, движок JavaScript, написанный на C++ (Google V8), может иметь что-то похожее, но это не так. кажется, есть то, что я хочу либо.

4b9b3361

Ответ 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. При запуске вашего кода он остановится там, когда ваша переменная достигнет этого значения.

Вы заметите, что ваше условие установлено, потому что ваша точка останова становится оранжевой, а не синей.