Перерыв на изменение значения переменной - PullRequest
41 голосов
/ 27 октября 2011

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

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

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

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

ОБНОВЛЕНИЕ Похоже, что этот тип поведения доступен по крайней мере для неуправляемого кода , написанного на C ++ Так что я подумал, что, возможно, движок javascript, написанный на C ++ (Google V8), может иметь что-то похожее, но это не так.у меня тоже есть то, что я хочу.

Ответы [ 3 ]

18 голосов
/ 27 октября 2011

Вам даже не нужна IDE - вы можете использовать «Object.watch ()»:

Object.Watch Tutorial

Если вы используете любойотладчик, я бы настоятельно рекомендовал Firebug.Для всех ваших нужд Javascript, HTML и CSS: -):

http://getfirebug.com/javascript

10 голосов
/ 27 сентября 2013

У меня есть успех с этой библиотекой в ​​Chrome, и она поддерживает все основные браузеры.

https://gist.github.com/eligrey/384583

Просто включите файл .js, затем позвоните:

yourObject.watch('someProperty', function() { 
    doWhatYouWant(); 
    debugger; 
    console.write('this too'); 
    alert('Object Changed'); //etc 
});
0 голосов
/ 23 сентября 2015

Я не знаю, правильно ли я понял ваш вопрос. Если вы хотите посмотреть выражение и остановить его, когда оно достигнет определенного значения во время сеанса отладки js в Chrome Developer Tools, это довольно тривиально.

Вы можете просто поставить точку останова на строке, где находится значение, которое вы хотите проверить, затем щелкнуть по нему правой кнопкой мыши и выбрать «Изменить точку останова ...». Появится диалоговое окно с запросом выражения, где выполнение остановится, когда его значение станет истинным.

Например, допустим, у вас есть цикл, и вы добавляете одну единицу к переменной внутри него и хотите остановить выполнение, когда переменная равна 3. Выражение в цикле будет выглядеть так:

n = i++;

Вы должны установить точку останова на этой строке, и выражение для наблюдения (после запроса «Изменить точку останова ...») будет n == 3. При запуске вашего кода он остановится, когда ваша переменная достигнет этого значения.

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

...