Имеется функция на JS, запускающаяся в браузере (т.е. требующая window, window.document и т.п.)
Необходимо проследить какие методы каких объектов вызывал скрипт и какие свойства каких объектов
читал и изменял.
Существуют ли инструменты/отладчики/фреймворки для JS, позволяющие это сделать?
Я пробовал вешать "обработчик" на каждую функцию в window, проходя window рекурсивно (чтобы повесить
обработчики и функции объектов, функции объектов внутри объектов и так далее):
Код:
|
function augment(withFn) {
var name, fn;
for (name in window) {
fn = window[name];
if (typeof fn === 'function') {
window[name] = (function(name, fn) {
var args = arguments;
return function() {
withFn.apply(this, args);
return fn.apply(this, arguments);
}
})(name, fn);
}
}
} |
Но это настолько ресурсорасточительно, что сожрало больше 1 Гб памяти (IE подвесил систему и дальше я его просто убил). Нужен более гуманный способ.
Короче, к примеру, если скрипт делает
window.shit = 'a';
alert(window.shit);
, то в логе должна быть инфа о том, что:
writing window.shit
reading window.shit
calling window.alert
В задаче мне нужно знать, что из "окружения", в котором скрипт работает, он читает и вызывает.