Установка точек останова при вызове функций в Chrome Dev. Режим

Есть ли способ установить точки останова, когда определенные функции готовы к выполнению?

Это не обязательно должна быть явная точка останова - я просто хочу, чтобы выполнение приостанавливалось при вызове console.log().

Или мне следует прибегнуть к этому методу.

Я предпочитаю делать это без изменения кода или вручную устанавливать точки останова каждые console.log.


person pushkin    schedule 14.07.2015    source источник
comment
1. Как сказано в этой теме, ставьте debbuger; перед console.log. 2. Откройте инструмент разработчика, перейдите на вкладку Sources и найдите console.log в своем коде, щелкните номер его строки слева, и он должен установить для вас точку останова.   -  person fuyushimoya    schedule 14.07.2015
comment
Мне просто было интересно, есть ли способ сделать это без изменения моего кода. Но я полагаю, что буду использовать debugger;.   -  person pushkin    schedule 14.07.2015
comment
Думаю, второй способ не модифицирует ваш код?   -  person fuyushimoya    schedule 14.07.2015
comment
Это правда. Извините, я не понял. Я не хочу изменять код, но также не хочу, чтобы мне приходилось вручную щелкать каждый console.log. Я надеялся, что у Chrome Dev Tools есть способ просто сказать, что он прерывается перед всеми console.log вызовами.   -  person pushkin    schedule 14.07.2015


Ответы (2)


Да, это уловка. Создайте собственную функцию ведения журнала, введите в нее debugger и вызовите console.log, и вы получите то, что хотели:

function log(message) {
    debugger;
    console.log(message) ;
}

Редактировать:

Вы также можете заменить console.log аналогичной функцией, вызывающей оригинал:

var clog = console.log;
console.log = function(message) {
    if(message == '...') {
        debugger;
    }
    clog.apply(console, arguments);
}

Этот код повлияет на все вызовы журнала на вашей странице. Проверка заключается в том, чтобы поймать определенное сообщение. Удалите его, чтобы всегда останавливаться.

person manji    schedule 14.07.2015
comment
Насчет взлома кода до console.log я не писал. Как в backbone.js, который где-то спрятан. Есть ли способ настроить таргетинг на эти журналы без редактирования файлов? - person pushkin; 14.07.2015
comment
Полагаю, мне придется вручную установить эти точки останова в Dev Tools. - person pushkin; 14.07.2015

Как насчет того, чтобы вызвать это в самом начале, чтобы добавить паузу для каждого console.log?

Это заменит исходный console.log, сначала сделайте паузу, а затем вызовите оригинальный console.log для вас. И это будет применяться ко всем console.log вызовам.

(function () {
  var oldLog = console.log;
  console.log = function() {
    debugger;
    oldLog.apply(console, arguments);
  }
})();

console.log('hello');

person fuyushimoya    schedule 14.07.2015
comment
Есть ли способ заставить его сломаться при исходном вызове, а не внутри этой функции? Конечно, я мог бы просто шагнуть пару раз, чтобы вернуться туда, где я был, так что это не имеет большого значения. - person pushkin; 14.07.2015
comment
О, думаю, я не могу, потому что он ломается там, где debugger;. Ничего. - person pushkin; 14.07.2015
comment
Боюсь, что нет, но хорошие новости: в режиме паузы вы видите Call Stack справа от панели, он должен быть чуть ниже Watch, вы можете щелкнуть по нему, чтобы выйти из текущей области и вернуться в область, где его вот-вот вызовут. - person fuyushimoya; 14.07.2015
comment
Например, когда вы видите остановку в этом фрагменте, вы должны увидеть, что первая строка - это console.log, а вторая строка - это (anonymous function), нажмите на вторую, вы должны увидеть, как chrome dev направит вас обратно из console.log к точке, которую он собирается вызвать. - person fuyushimoya; 14.07.2015