ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π² самый нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” это всСгда стрСсс для Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€Π° ΠΈ головная боль для администратора. Когда Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ рСгистрации появляСтся сообщСниС ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ стСка ΠΈΠ»ΠΈ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, систСма фактичСски Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 Ρ‡Π°Ρ‰Π΅ всСго ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ логичСской ошибкС Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΠ³Π΄Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя бСсконСчно ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ условия Π²Ρ‹Ρ…ΠΎΠ΄Π°.

Вакая ситуация ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΊ Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ послС обновлСния, Ρ‚Π°ΠΊ ΠΈ Π² самописных Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅. БистСма Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ срабатываСт автоматичСски, прСрывая Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ сСрвСра ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Однако простоС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ дСйствия Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ stack overflow, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΈΠ½ΠΎΠ²Π½Ρ‹ΠΉ участок ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ тСхничСским дСталям ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ возникновСния ошибки. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ выдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ объСм памяти ΠΏΠΎΠ΄ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Если рСкурсивный Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, стСк пСрСполняСтся. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΊΠ°ΠΊ явной рСкурсиСй Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‚Π°ΠΊ ΠΈ скрытыми ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ событий Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ вычислСнии слоТных Ρ„ΠΎΡ€ΠΌΡƒΠ» Π² рСгистрах.

Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΆΡƒΡ€Π½Π°Π» рСгистрации

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ сбоя Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° рСгистрации. ИмСнно Ρ‚Π°ΠΌ фиксируСтся ΠΌΠΎΠΌΠ΅Π½Ρ‚ критичСского ΠΎΡ‚ΠΊΠ°Π·Π° ΠΈ контСкст выполнСния. НСобходимо ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· консоль администрирования сСрвСра 1Π‘. Π˜Ρ‰ΠΈΡ‚Π΅ записи с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ваТности «Ошибка» ΠΈΠ»ΠΈ Β«ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ зависания.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° тСкст сообщСния ΠΎΠ± ошибкС. Π§Π°Ρ‰Π΅ всСго систСма ΠΏΠΈΡˆΠ΅Ρ‚: Β«ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка» ΠΈΠ»ΠΈ Β«ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ влоТСнности». Π–ΡƒΡ€Π½Π°Π» рСгистрации ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ имя модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка, ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΊΠΎΠ΄Π°. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если ΠΆΡƒΡ€Π½Π°Π» рСгистрации ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ запись, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для критичСских событий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡˆΡƒΠΌΠ°.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ошибка Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ строку, Π° лишь имя ΠΎΠ±Ρ‰Π΅Π³ΠΎ модуля. Π’ΠΎΠ³Π΄Π° приходится Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступСн Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, Ссли ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Анализ стСка позволяСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²: какая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Π²Π°Π»Π° ΠΊΠ°ΠΊΡƒΡŽ, ΠΈ Π³Π΄Π΅ Ρ†ΠΈΠΊΠ» замкнулся.

πŸ“Š Π“Π΄Π΅ Ρ‡Π°Ρ‰Π΅ всСго Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Ρƒ вас?
Π’ самописных ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…
Π’ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях
ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π±Π°Π·Ρ‹
ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними источниками

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° зацикливания β€” это Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ написанная рСкурсия. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π΅Ρ€Π΅Π²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ справочников, Π½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ условиС остановки. Π’ 1Π‘ 8.3 Π΄Π°ΠΆΠ΅ нСбольшая ошибка Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ распространСнный сцСнарий связан с событиями Ρ„ΠΎΡ€ΠΌ. НапримСр, ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° Ρ„ΠΎΡ€ΠΌΡ‹ срабатываСт событиС ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ мСняСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚. Если ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ снова мСняСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ бСсконСчный Ρ†ΠΈΠΊΠ». ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° пытаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эти события, Π½ΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности быстро достигаСт Π»ΠΈΠΌΠΈΡ‚Π°.

  • πŸ”„ БСсконСчная рСкурсия Π² ΠΎΠ±Ρ‰ΠΈΡ… модулях ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ иСрархичСских структур Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ” ЦикличСскиС Π²Ρ‹Π·ΠΎΠ²Ρ‹ событий Ρ„ΠΎΡ€ΠΌ (ΠŸΡ€ΠΈΠ˜Π·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠŸΡ€ΠΈΠ§Ρ‚Π΅Π½ΠΈΠΈΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅) ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ².
  • βš™οΈ НСкоррСктная Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π³ΠΎΠ½ΡΡŽΡ‚ΡΡ Ρ‚ΡƒΠ΄Π°-сюда ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ Π±Π΅Π· Ρ„Π»Π°Π³ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ влияниС Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ свои ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с основным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ часто становятся скрытым источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… ΠΊΠΎΠ΄ выполняСтся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ контСкстС, Ρ‡Ρ‚ΠΎ ΠΈ основной, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ протСстирован.

Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях

Иногда ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² рСгистрС накоплСния Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΡ‚ΠΎΠ³ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ рСгистра ссылаСтся Π½Π° сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, создавая логичСский ΠΊΡ€ΡƒΠ³ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ пСрСсчСта.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Для поиска ошибки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ЗапуститС Π±Π°Π·Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ воспроизвСдитС дСйствиС, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ сбой. Когда Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ остановится Π½Π° ошибкС, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ.

Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, запуститС ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ сСрвСра. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ доступа ΠΊ консоли сСрвСра 1Π‘, Π½ΠΎ Π΄Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ. Π’ стСкe Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΡ‰ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ функция вызываСтся дСсятки Ρ€Π°Π· подряд, Π²Ρ‹ нашли источник зацикливания.

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Π½Π°Π»ΠΈΠ·Π° стСка Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅

// 1. MainModule.ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ()

// 2. MainModule.Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘ΡƒΠΌΠΌΡ‹()

// 3. MainModule.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠšΡƒΡ€ΡΠ’Π°Π»ΡŽΡ‚Ρ‹()

// 4. MainModule.ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹() -> Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ (Π¦Π˜ΠšΠ›!)

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом являСтся Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½Π΅ΡˆΠ½ΠΈΡ… срСдств, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SonarQube ΠΈΠ»ΠΈ встроСнныС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасныС конструкции, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Однако автоматичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ всСгда видят логичСскиС Ρ†ΠΈΠΊΠ»Ρ‹, зависящиС ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Ρ€ΡƒΡ‡Π½ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· стСка остаСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

β˜‘οΈ Алгоритм поиска ошибки

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибок Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ участок Π½Π°ΠΉΠ΄Π΅Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти ΠΏΡ€Π°Π²ΠΊΠΈ Π² ΠΊΠΎΠ΄. Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ рСкурсии, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт условиС Π²Ρ‹Ρ…ΠΎΠ΄Π° (base case). Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ бСсконСчным. Для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ счСтчик Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ влоТСнности ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли Π³Π»ΡƒΠ±ΠΈΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ допустимый ΠΏΡ€Π΅Π΄Π΅Π».

Π’ случаС с событиями Ρ„ΠΎΡ€ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ΠΈ-Π·Π°Ρ‰ΠΈΡ‚Ρ‹. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° устанавливайтС Π±ΡƒΠ»Π΅Π²Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° событиС. Π­Ρ‚ΠΎ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π€Π»Π°Π³ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ событий β€” это стандартный ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ программирования Π² 1Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹.

Π’ΠΈΠΏ ошибки ΠœΠ΅ΡΡ‚ΠΎ возникновСния ΠœΠ΅Ρ‚ΠΎΠ΄ исправлСния
РСкурсия Π±Π΅Π· Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠžΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π»ΠΈΠΌΠΈΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ
Π¦ΠΈΠΊΠ» событий Ρ„ΠΎΡ€ΠΌΡ‹ ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ„Π»Π°Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ
ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠŸΠ»Π°Π½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π°, ΡƒΠ·Π»Ρ‹ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π»Π°Π³Π° Β«Π­Ρ‚ΠΎΡ‚ ΡƒΠ·Π΅Π»Β» ΠΏΠ΅Ρ€Π΅Π΄ записью

Если ошибка связана с вычислСниСм Ρ„ΠΎΡ€ΠΌΡƒΠ» Π² рСгистрах, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ полями. Иногда ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ поля Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСсчСт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСсчСта ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ расчСта Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ этапы ΠΈΠ»ΠΈ использованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ВнСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ обновлСния. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ согласовывайтС ΠΏΡ€Π°Π²ΠΊΠΈ с Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠΌ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

πŸ’‘

ΠŸΠ΅Ρ€Π΅Π΄ внСсСниСм ΠΏΡ€Π°Π²ΠΎΠΊ Π² ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ создайтС ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄, Ссли исправлСниС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ, Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ ошибкам.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэша ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² 1Π‘

Иногда ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° зацикливания кроСтся Π½Π΅ Π² ΠΊΠΎΠ΄Π΅, Π° Π² ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½ΠΎΠΌ кэшС клиСнтского прилоТСния ΠΈΠ»ΠΈ сСрвСра. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ скомпилированных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹. Если Ρ„Π°ΠΉΠ» кэша ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции, уходя Π² бСсконСчный Ρ†ΠΈΠΊΠ».

Для очистки кэша Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ содСрТимоС ΠΏΠ°ΠΏΠΊΠΈ кэша. ΠŸΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ зависит ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° находится Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ AppData. На сСрвСрС очистка кэша Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остановки слуТбы 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈ удалСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ сСрвСра.

ПослС очистки кэша Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС Π±Π°Π·Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ происходит пСрСкомпиляция ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исчСзла послС этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π·Π½Π°Ρ‡ΠΈΡ‚, Π΄Π΅Π»ΠΎ Π±Ρ‹Π»ΠΎ Π² ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Π½Π΅ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈ оптимизация ΠΊΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ повторСния ситуации Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ логичСскиС ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π²Ρ‚ΠΎΡ€ ΠΌΠΎΠ³ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляйтС рСкурсивным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ событий. БтатичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с большими массивами Π΄Π°Π½Π½Ρ‹Ρ…. ИспользованиС Ρ†ΠΈΠΊΠ»ΠΎΠ² с большим количСством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ событий Ρ„ΠΎΡ€ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ зависаниС. ВыноситС тяТСлыС вычислСния Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основной ΠΏΠΎΡ‚ΠΎΠΊ выполнСния. Π­Ρ‚ΠΎ повысит ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.

  • βœ… РСгулярно ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π°ΡƒΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСсто самописных Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
  • βœ… ВСстируйтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠΎΠΉ Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ сСрвСр.

Π’Π°ΠΊΠΆΠ΅ слСдитС Π·Π° обновлСниями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях часто ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ошибки самого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² старых Ρ€Π΅Π»ΠΈΠ·Π°Ρ…. ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ β€” Π·Π°Π»ΠΎΠ³ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ нСидСального ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

πŸ’‘

Главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° зацикливания β€” отсутствиС условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· рСкурсии ΠΈΠ»ΠΈ цикличСский Π²Ρ‹Π·ΠΎΠ² событий. РСшСниС Π»Π΅ΠΆΠΈΡ‚ Π² плоскости Π°Π½Π°Π»ΠΈΠ·Π° стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ внСдрСния Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ².

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Π΅?

Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ остановка процСсса ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ транзакция откатываСтся. Однако Ссли ошибка ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° частичная запись. ВсСгда провСряйтС Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… послС Ρ‚Π°ΠΊΠΈΡ… сбоСв.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ?

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с кэшСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π½Π° спСцифичСскиС настройки интСрфСйса этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ значСния, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ сбой Π»ΠΎΠ³ΠΈΠΊΠΈ.

Как ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ стСка Π² 1Π‘?

Π›ΠΈΠΌΠΈΡ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ стСка задаСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ рСкомСндуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это лишь отсрочит ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ исправит ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΊΠΎΠ΄Π΅. НуТно ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ бСсконСчного Π²Ρ‹Π·ΠΎΠ²Π°, Π° Π½Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ рСсурсы.

ВлияСт Π»ΠΈ вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π½Π° частоту Ρ‚Π°ΠΊΠΈΡ… ошибок?

Π”Π°, Π² Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 8.3.20+) ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ обнаруТСния рСкурсии ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со стСком. ОбновлСниС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… сбоСв ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ?

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ошибка самой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ модуля. НСобходимо ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² слуТбу ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΠΈΡ€ΠΌΡ‹ 1Π‘, прСдоставив Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈ ΠΆΡƒΡ€Π½Π°Π» рСгистрации. Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· вСских оснований Π½Π΅ стоит.