5

Это довольно сложный вопрос, который может быть просто невозможным с тем, что доступно в настоящее время, но если бы был простой способ сделать это, это было бы огромным.Неразрывные точки останова (точки следа) в Javascript?

Я отлаживаю некоторый JavaScript в Chrome, и поскольку он очень управляется событиями, я предпочитаю получать отчеты о трассировке кода (что вызвано и т. Д.) Вместо контрольных точек. Поэтому, когда я оставляю точку останова, мне бы хотелось увидеть имя и аргументы локальной функции.

Ближайший я могу получить это падение условной точки останова в, как следующее:

Sample trace

Есть две большие проблемы с этим подходом:

  1. Оклейка это в каждую контрольную точку слишком громоздка. Люди будут гораздо чаще использовать его, если его можно выбрать как действие по умолчанию для каждой точки останова.
  2. В Google Chrome звонки журналов запускаются дважды.

Любые идеи по пути преодоления любой из этих проблем? Я думаю, что это возможно в IE with VS, но UI там кажется столь же громоздким.

+1

Если вам просто нужно это для отслеживания событий DOM, вы можете попробовать использовать метод консоли '' monitorEvents() ') (http://www.briangrinstead.com/blog/chrome-developer-tools-monitorevents). – kpozin

+0

Я действительно попытался использовать monitorEvents в какой-то момент, бросив псевдо-события для объектов, отличных от DOM. Вы можете получить довольно далеко, отслеживая ошибки, но у него нет мелкозернистой фильтрации, в которой я нуждался. – Chris

ответ

0

Я не мог найти что-то для этого, поэтому я wrote my own.

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

Предупреждение: конкретный код ниже не проверен.

var debug = TraceJS.GetLogger("debug", "mousemove"); 
$('div').mousemove(function(evt) { 
    debug(this.id, evt); 
}); 

Каждый раз, когда мышь перемещается над DIV, он генерирует LogEvent тегами [ «MouseMove», {идентификатор этого элемента}]

Забавная часть является возможность выборочно смотреть Мероприятия. Если вы хотите видеть только MouseMove события для элемента #a, вызовите следующую команду в консоли:

TraceJS('a'); 

Когда я хочу, чтобы увидеть все события MouseMove, вы можете позвонить:

TraceJS('mousemove'); 

Только события, соответствуют вашему фильтру. Если вы вызываете TraceJS (без аргументов), то вызовы журнала перестают отображаться.

1

Лучший вариант, который я нашел, - это отредактировать код javascript на панели Javascript на Chrome, добавив console.log.

Он будет работать только после того, как страница будет загружена (если только вы не можете позволить себе поставить точку останова после обновления, а затем добавить строки ведения журнала) и (что еще хуже), вам придется делать это каждый раз, когда вы перезагружаете стр.

Удачи вам в поиске!

1

IE11 теперь имеет «точки трассировки», независимо от Visual Studio. Они делают то, что вы просили три года назад. Я не вижу их в Chrome или других браузерах, но, надеюсь, они скоро поймают!

+0

Прохладный! https://msdn.microsoft.com/en-us/library/ie/dn255007(v=vs.85).aspx Мне действительно нравится библиотека, которую я установил сейчас, так как я могу оставлять точки трассировки все время и поворачивать их при необходимости и при необходимости. Угадайте, что происходит. – Chris

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