Во время отладки JavaScript, есть ли способ предупредить текущий стек вызовов?

Если будет доступна глобальная горячая клавиша, тогда RegisterHotKey выполнит трюк

23
задан rosscj2533 13 January 2010 в 21:07
поделиться

5 ответов

Быстрая и грязная в браузерах на основе геккона:

new Error().stack

Вы также можете вручную траловать некоторые из стека с использованием функции .prototype.Caller:

var thisFunction = arguments.callee;
var caller = thisFunction.caller;
var callerCaller = caller.caller;
// ...and eventually, assuming no recursion:
var bottomCaller = ...;
assert(bottomCaller.caller === null);

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

Другим предостережением к вызывающему уровню - это то, что идет вперед, если какой-либо из вашего кода использует строгий режим ECMAScript 5, созывом свойство строгих функций режима (или функций, которые имеют себя Было названо из строгих функций режима) - это так называемая «ядовитая таблетка», которая бросает тип типа при доступе. Свойство вызывающего абонента свойство «связанных» функций (те, которые создаются функцией ES5 . Способ .Prototype.bind . Эти ограничения нарушают общий алгоритм для ходьбы стека, хотя можно себе представить, что можно использовать специфические способы работы (входные и выездные функции аннотирования, возможно).

Обратите внимание, что ходьба с стеком, как это не отличная идея в производственном кодексе (как быстрый взлом для отладки, это нормально, то); На данный момент ходит вверх по стеке, как в последнем примере, несколько дороже в двигателе Mozilla JS, и он, вероятно, будет выбросить вас из машинного кода и обратно в интерпретацию кода. Кроме того, прогулка стека составляет O (n 2 ), что может иметь значение, если вы склонны иметь сложные, глубокие стеки.

40
ответ дан 28 November 2019 в 22:21
поделиться

Вы смотрели на поджигателя - и точку останова. Если это только для отладки, то этого может быть достаточно.

Также - вы можете посмотреть Здесь

3
ответ дан 28 November 2019 в 22:21
поделиться

Лучший способ отладки Javascript - это использование Firebug, который включает в себя полный отладчик Javascript.

При отладке в IE можно использовать Visual Web Developer Express (или любую другую версию Visual Studio).
Если вы отлаживаете IE8, вы можете использовать его встроенные средства разработчика, которые включают отладчик.

В Javascript можно получить стек вызовов; см. здесь .

3
ответ дан 28 November 2019 в 22:21
поделиться

Используйте отладчик, подобный Firebug для этого, если вы находитесь в Firefox. Chrome и Opera есть встроенный отладчик. И есть инструменты разработчиков для Internet Explorer.

6
ответ дан 28 November 2019 в 22:21
поделиться

Из документов :

Если два экземпляра Random создаются с одним и тем же начальным числом, и для каждого выполняется одна и та же последовательность вызовов метода, они генерируют и возвращают идентичные последовательности чисел. Чтобы гарантировать это свойство, для класса Random задаются определенные алгоритмы. Реализации Java должны использовать все алгоритмы, показанные здесь для класса Random , для абсолютной переносимости кода Java.

-121--2823144-

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

Поместите себя в начало первой строки, C-пробел , перейдите к последней строке и концу отступа, который требуется удалить, и C-x r k (прямоугольное уничтожение). Это делает это.

-121--1640902-

В Firefox + Firebug и WebKit можно использовать console.trace ()

Он не отображает аларм () , но распечатывает stacktrace на консоли.

25
ответ дан 28 November 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: