Разыскивание max-specpdl-size ошибки в emacs

Да глобальные примитивы инициализируются к ПУСТОМУ УКАЗАТЕЛЮ.

Пример:

int x;

int main(int argc, char**argv)
{
  assert(x == 0);
  int y;
  //assert(y == 0); <-- wrong can't assume this.
}

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

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

29
задан Jason Baker 24 August 2009 в 13:54
поделиться

1 ответ

Чтобы отследить проблему, вы можете попробовать следующее:

(setq max-specpdl-size 5)  ; default is 1000, reduce the backtrace level
(setq debug-on-error t)    ; now you should get a backtrace
C-h a ; in speedbar

Вы должны получить обратную трассировку ошибки, и в этот момент вы сможете отследить нарушившую процедуру.

I Я бы также попробовал загрузить emacs без вашего файла конфигурации ( emacs -q ), чтобы посмотреть, есть ли что-то в вашем .emacs, что влияет на работу. (Я не могу получить бесконечный цикл, используя Ch a ). И если это ваш .emacs, то лучший способ, который я нашел для этого, - это либо двоичный поиск (поместите ошибку (ошибка «лягушка») ), либо что-то вроде того, что в середине вашего .emacs, load, test, если нет проблем, поместите ошибку на 3/4, в противном случае на 1/4, повторите ...) или вручную оцените ваш .emacs построчно (регион за регионом), проверяя после каждой порции. Эти настройки должны помочь.

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

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