Javascript Backtrace - PullRequest
       17

Javascript Backtrace

9 голосов
/ 22 июля 2011

Как получить обратную трассировку в Javascript?

Идеальные особенности:

  • имя функции входа или какой-либо значимый идентификатор для анонимных функций,
  • список аргументов на каждом уровне,
  • номера строк.

Можно ли это сделать в стандартном ECMAScript?

Если нет, то можно ли это сделать на обычных диалектах веб-браузера?

Спасибо.

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

Спасибо за ваши предложения.

Мой диалект не поддерживает arguments.caller или arguments.callee.

Я могу сделать это:

try {
    let x = null;
    x .foo ();
}
catch (e) {
        debug (dump (e.stack));
}

Это дает мне информацию в виде строки, что на первый взгляд хорошо, но было бы очень полезно прогуляться e.stack. У него есть стандартная форма?

Еще раз спасибо.

Ответы [ 4 ]

23 голосов
/ 10 июня 2015

В моем опыте отладки я всегда использую это

(function () { console.log(new Error().stack); })();

Как следует из приведенных ниже комментариев, читатели должны предпочесть: console.log (новая ошибка (). stack);

4 голосов
/ 22 июля 2011

возможно, это может помочь вам, но пока не работали с ним:

Эта ссылка больше не активна: kallewoof.com/2006/03/15/precompiling-javascript-functions/

также посмотрите на это:

Как узнать функцию вызова в JavaScript?

1 голос
/ 10 января 2018

Эта библиотека: stacktrace-js работает где угодно, не только с ошибками.

Пример:

StackTrace.get()
    .then(stack => { console.log(stack) })
    .catch(err => { console.log(err) });
0 голосов
/ 22 июля 2011

Эта ссылка может быть полезна:

http://snipplr.com/view/23047/javascript-backtrace-function/

...