4

Я работаю над некоторыми JavaScript - конечно! - и я делаю некоторые отладки в Chrome.Есть ли способ установить точку прерывания (например, когда именованная функция вызывается) программно?

Теперь я хотел бы включить точку останова программно, когда вызывается функция (с заданным именем).

  1. Он должен функционировать как точка останова. Ключевое слово debugger всегда ломается (uhg!) И является уродливым артефактом для ввода и удаления из кода.

  2. Не требует ручной навигации/интерактивности исходного кода. Поскольку источник объединяется посредством автоматизированного процесса сборки, это становится трудоемким делом.

В идеале было бы как-то, как простой и программно управляемой, например.

Debugger.setBreakpoint({onFunction: "Foo.prototype.bar"}) 

Есть ли способ, чтобы установить брейк-поинт для того, когда конкретная функция (по имени) называется без ручной навигации загруженного сценария?

Если нет, как предусмотрено программно, есть ли способ установить точку останова через? (Точка останова, а не debugger -break.) -break.)

(Я могу изменить использование подобных инструментов разработчика в другом браузере, если он работает в Windows, но решение Chrome, если таковое существует, является идеальным.)

ответ

7

В инструменте разработчика Chrome вы можете использовать инструкцию debug(function) для вызова функции и ее выхода из нее.

Еще один способ, если у вас есть точная Справочник функций
var func = function(){ if (arguments.callee._debug) { debugger; } }

набор _debug флаг true
func._debug = true

то функция func() будет остановлена. Это сложно, и это не сработает strict mode.

+0

@ user2864740 большой. Я только что отредактировал комментарий и добавил еще один способ. –

+0

Решение 'debug (..)' отлично подходит для счета, тем более что это только текущий артефакт отладки! Не могу поверить, что я никогда об этом не знал. – user2864740

3

Как насчет написать одну функцию, в которой вы можете разместить точку останова:

function setBreakpoint (fn) { 
    return function() { 
     debugger; 
     fn.apply(this, arguments) 
    } 
} 

И в консоли переопределить функцию, которую нужно разбить на:

Foo.prototype.bar = setBreakpoint(Foo.prototype.bar); 
+1

+1 для кросс-браузерного решения. – joews

 Смежные вопросы

  • Нет связанных вопросов^_^