Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° встроСнном языкС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выполняСт Π΅Π³ΠΎ Π½Π΅ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ, Π° ΠΏΠΎ строгим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. Одно ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… понятий, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ этот процСсс β€” стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π‘Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ эффСктивно ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Но Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅?

Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” это динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… ΠΈ функциях Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° вызываСтся новая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, Π΅Ρ‘ контСкст (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎΡ‡ΠΊΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°) добавляСтся Π² стСк. Когда ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π΅Ρ‘ запись удаляСтся β€” Ρ‚Π°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° "ΠΏΠΎΠΌΠ½ΠΈΡ‚", ΠΊΡƒΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² устроСн Π² 1Π‘ 8.3, ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты Π΅ΡΡ‚ΡŒ для Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок, связанных с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ стСка ΠΈΠ»ΠΈ рСкурсиСй.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ стСк ΠΊΠ°ΠΊ стопку Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свСрху ΠΈ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘:

  • πŸ“₯ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² стСк (push): происходит ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сохраняСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строку ΠΊΠΎΠ΄Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ послС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°) ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.
  • πŸ“€ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· стСка (pop): происходит ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ восстанавливаСтся, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТаСтся с сохранённой Ρ‚ΠΎΡ‡ΠΊΠΈ.
  • πŸ”„ ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: послСдняя добавлСнная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π²ΠΎΠΉ (ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ LIFO β€” Last In, First Out).

НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π() β†’ ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π‘() β†’ ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π’(), Ρ‚ΠΎ Π² стСкС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ располоТСны Ρ‚Π°ΠΊ: ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π’ (Π²Π΅Ρ€Ρ…), Π·Π°Ρ‚Π΅ΠΌ ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π‘, Π° Π²Π½ΠΈΠ·Ρƒ β€” ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π. ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π’ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрнётся Π² ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π‘, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ 1Π‘ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²ΠΈΠ΄Π΅Π½ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ (ΠΎΠΊΠ½ΠΎ Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²), Π³Π΄Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ всС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ модуля, строки ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт для поиска ошибок, особСнно Π² слоТных систСмах с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ.

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π² 1Π‘?
ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ
Волько ΠΏΡ€ΠΈ слоТных ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…
Π Π΅Π΄ΠΊΠΎ
Никогда Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π» ΠΎ Ρ‚Π°ΠΊΠΎΠΌ

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘: практичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘Π΅Π· понимания стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ‹ рискуСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ "Π²ΡΠ»Π΅ΠΏΡƒΡŽ", Π½Π΅ контролируя Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии, Π³Π΄Π΅ Π·Π½Π°Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ:

  • 🐞 Поиск источника ошибки. Допустим, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ°Π΄Π°Π΅Ρ‚ с сообщСниСм ΠΎΠ± ошибкС Π² строкС 100. Π’ стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, какая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Π²Π°Π»Π° эту строку, ΠΈ смоТСтС ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π΄ΠΎ корня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.
  • πŸ”„ ΠžΡ‚Π»Π°Π΄ΠΊΠ° рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. РСкурсия (ΠΊΠΎΠ³Π΄Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя) ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ стСка. Анализ стСка ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ влоТСнности ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.
  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если Π² стСкС слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° нСэффСктивный ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, лишниС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ: Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Excel Π² 1Π‘, ΠΈ Π½Π° большом Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° "зависаСт". Π’ стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ() вызываСтся тысячи Ρ€Π°Π· подряд ΠΈΠ·-Π·Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π‘Π΅Π· стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ‹ Π±Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ часы Π½Π° поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ‚Ρ‹ΠΊΠ°.

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ кСйс β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Когда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, 1Π‘ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ трассировку стСка, Π³Π΄Π΅ Π²ΠΈΠ΄Π½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π­Ρ‚ΠΎ позволяСт Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π³, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ проявляСтся нСявно (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π‘Π£Π‘Π” ΠΈΠ»ΠΈ внСшними ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ).

πŸ’‘

Если Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ β€” это Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ зацикливания ΠΈΠ»ΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΉ рСкурсии. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°!

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘: инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 Π΅ΡΡ‚ΡŒ нСсколько способов ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ инструмСнты:

  1. Окно "Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²" Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ остановкС Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ΅ останова ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠžΡ‚Π»Π°Π΄ΠΊΠ° β†’ Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚:
    • Имя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
    • ΠœΠΎΠ΄ΡƒΠ»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° находится;
    • НомСр строки;
    • ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Ссли Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ отобраТСния).
  • Π–ΡƒΡ€Π½Π°Π» рСгистрации. ΠŸΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π»ΠΎΠ³ записываСтся трассировка стСка с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ всСх Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… ошибкС.
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ доступ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ стСк Π² Π²ΠΈΠ΄Π΅ строки (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для логирования).
  • Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² БСрвис β†’ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ β†’ ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ быстрСС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ.

    Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π§Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    Окно "Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²" ΠžΡ‚Π»Π°Π΄ΠΊΠ° β†’ Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ Ctrl+Alt+S Π”Π΅Ρ€Π΅Π²ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ строк ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, поиск логичСских ошибок
    Π–ΡƒΡ€Π½Π°Π» рСгистрации АдминистрированиС β†’ Π–ΡƒΡ€Π½Π°Π»Ρ‹ рСгистрации Врассировка стСка ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Анализ критичСских ошибок постфактум
    Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²() Π’Ρ‹Π·ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ Π‘Ρ‚Π΅ΠΊ Π² Π²ΠΈΠ΄Π΅ строки Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ… стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ систСмныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий). Π˜Ρ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ β€” Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

    Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² Ρ„Π°ΠΉΠ» для Π°Π½Π°Π»ΠΈΠ·Π°?

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

    ВСкстБтСка = Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²();
    

    ВСкстБтСка.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ("C:\temp\stacktrace.txt");

    Π­Ρ‚ΠΎ пригодится, Ссли ошибка воспроизводится Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π° Ρƒ вас Π½Π΅Ρ‚ доступа ΠΊ Π΅Π³ΠΎ Π±Π°Π·Π΅.

    Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки, связанныС со стСком Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

    ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° со стСком Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΠΎΡ‚ замСдлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΅Ρ‘ ΠΊΡ€Π°Ρ…Π°. Рассмотрим самыС распространённыС ошибки:

    • πŸ” ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π³Π»ΡƒΠ±ΠΈΠ½Π° рСкурсии ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΈΠΌΠΈΡ‚ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ~1000–2000 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π² 1Π‘). Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” рСкурсивная функция Π±Π΅Π· условия Π²Ρ‹Ρ…ΠΎΠ΄Π°:
      Ѐункция БСсконСчнаяРСкурсия()
      

      БСсконСчнаяРСкурсия(); // НСт условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ!

      ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

    • πŸ—‘οΈ Π£Ρ‚Π΅Ρ‡ΠΊΠΈ контСкста. Если ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·-Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ), Π΅Ρ‘ запись ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² стСкС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ накоплСнию "мусора".
    • πŸ” НСявныС Π²Ρ‹Π·ΠΎΠ²Ρ‹. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ сама добавляСт Π² стСк систСмныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΈΠ»ΠΈ запросами). Π˜Ρ… Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСполнСния стСка:

    1. ВсСгда провСряйтС условия Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² рСкурсивных функциях.
    2. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ большиС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅).
    3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ вмСсто рСкурсивных, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π›ΠΈΠΌΠΈΡ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ стСка Π² 1Π‘ зависит ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ настроСк сСрвСра. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с RDP ΠΈΠ»ΠΈ Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅) ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Π² толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. ВСстируйтС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° Π² условиях, Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΊ Π±ΠΎΠ΅Π²Ρ‹ΠΌ.

    РСкурсия ΠΈ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²: ΠΊΠ°ΠΊ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ошибок

    РСкурсия β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, Π½ΠΎ Π² 1Π‘ ΠΎΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особой остороТности ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ стСка. Рассмотрим, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

    Допустим, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ справочника рСкурсивно:

    Ѐункция ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)
    

    Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π­Ρ‚ΠΎΠ“Ρ€ΡƒΠΏΠΏΠ° Π’ΠΎΠ³Π΄Π°

    Для КаТдого ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Π΅Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π¦ΠΈΠΊΠ»

    ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹(ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚); // РСкурсивный Π²Ρ‹Π·ΠΎΠ²

    ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

    Π˜Π½Π°Ρ‡Π΅

    // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

    ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

    ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ, Ссли Π³Π»ΡƒΠ±ΠΈΠ½Π° влоТСнности справочника ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΈΠΌΠΈΡ‚ стСка. РСшСния:

    • πŸ“Œ Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠΌ с использованиСм стСка (массива) для хранСния ΡƒΠ·Π»ΠΎΠ².
    • πŸ”’ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹. ДобавляйтС счётчик ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСнности ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΏΡ€ΠΈ достиТСнии ΠΏΠΎΡ€ΠΎΠ³Π°.
    • πŸ”„ Π₯востовая рСкурсия. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях компилятор 1Π‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π²ΠΎΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ (ΠΊΠΎΠ³Π΄Π° рСкурсивный Π²Ρ‹Π·ΠΎΠ² β€” послСдняя опСрация Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), Π½ΠΎ это Π½Π΅ гарантируСтся.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π°:

    ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±ΠΎΠΉΡ‚ΠΈΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ(ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚)
    

    Π‘Ρ‚Π΅ΠΊ = Новый Массив;

    Π‘Ρ‚Π΅ΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚);

    Пока Π‘Ρ‚Π΅ΠΊ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π¦ΠΈΠΊΠ»

    Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Π‘Ρ‚Π΅ΠΊ.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(0);

    Если Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π­Ρ‚ΠΎΠ“Ρ€ΡƒΠΏΠΏΠ° Π’ΠΎΠ³Π΄Π°

    Для КаТдого ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚.ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Π΅Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π¦ΠΈΠΊΠ»

    Π‘Ρ‚Π΅ΠΊ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(0, ΠŸΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚); // ДобавляСм Π² Π½Π°Ρ‡Π°Π»ΠΎ для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ

    ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

    Π˜Π½Π°Ρ‡Π΅

    // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнта

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

    ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

    ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

    πŸ’‘

    Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ всСгда бСзопаснСС рСкурсивных Π² 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ зависят ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

    Анализ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°

    Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструмСнт для поиска ошибок, Π½ΠΎ ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Анализируя Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ:

    • 🐒 "ВяТёлыС" ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ слишком часто ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎΠ»Π³ΠΎ.
    • πŸ”„ Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ простыС конструкции.
    • πŸ—‘οΈ ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² ΠΊΠΎΠ΄Π΅ послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅() вызываСтся 50 Ρ€Π°Π· подряд ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ:

    1. ВынСсти Π²Ρ‹Π·ΠΎΠ² Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°, Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.
    2. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.
    3. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· запрос ΠΊ Π±Π°Π·Π΅).

    Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ кСйс β€” Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Если для выполнСния простой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ трСбуСтся 10 Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, это ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° нСзависимыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) упростит ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π°.

    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ 1Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Если Π² стСкС Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ тысячи Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ (ВСстированиС ΠΈ исправлСниС β†’ ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ) для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.

    Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ влоТСнности|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹|ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ врСмя выполнСния "тяТёлых" ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€|ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ (ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ)-->

    ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ совСты ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со стСком Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

    Π§Ρ‚ΠΎΠ±Ρ‹ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² повсСднСвной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, слСдуйтС этим рСкомСндациям:

    1. НастраивайтС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ:
      • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² стСкС (ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ β†’ ΠžΡ‚Π»Π°Π΄ΠΊΠ°).
      • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "быстрыС" Ρ‚ΠΎΡ‡ΠΊΠΈ останова (F9) для остановки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΡƒΠΆΠ½Ρ‹Ρ… мСстах.
  • Π›ΠΎΠ³ΠΈΡ€ΡƒΠΉΡ‚Π΅ стСк Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… мСстах:
    Если НС Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π”Π°Π½Π½Ρ‹Π΅) Π’ΠΎΠ³Π΄Π°
    

    Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ›ΠΎΠ³(Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²());

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

  • АнализируйтС стСк ΠΏΡ€ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…. Π’ Π±Π»ΠΎΠΊΠ΅ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСгда Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ трассировку:
    ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°
    

    // Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠ°ΡΡ‚ΡŒ

    Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ОписаниСОшибки() + Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹.ПБ + Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²());

    ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

  • Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими систСмами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:ERP ΠΈΠ»ΠΈ 1Π‘:Π£Π’) ΠΏΠΎΠ»Π΅Π·Π½ΠΎ:

    • πŸ“‚ Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎ модулям. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ ΠΏΠΎ стСку.
    • πŸ” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфиксы Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ_ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅()).
    • πŸ“Š Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для слоТных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (ΠΌΠΎΠΆΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ mind-map).

    Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ΡΡŒ ΠΎ стандартах имСнования ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ коммСнтирования ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ Π°Π½Π°Π»ΠΈΠ· стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

    Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²?

    Π’ ΠΎΠΊΠ½Π΅ стСка ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ (Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl+F) ΠΈΠ»ΠΈ сортировку ΠΏΠΎ модулям. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ β€” для этого ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Π·Π½Π°Ρ‡ΠΎΠΊ "–" рядом с Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ систСмных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€.

    FAQ: ЧастыС вопросы ΠΎ стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘

    МоТно Π»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘?

    НСт, Π»ΠΈΠΌΠΈΡ‚ стСка Тёстко Π·Π°Π΄Π°Π½ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π½Π΅ настраиваСтся. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ рСкурсии ΠΈΠ»ΠΈ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ систСмныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹?

    Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ β€” ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ сама добавляСт Π² стСк Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, выполнСния запросов ΠΈ Ρ‚.Π΄. Для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

    Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

    НастройтС ΠΆΡƒΡ€Π½Π°Π» рСгистрации (АдминистрированиС β†’ Π–ΡƒΡ€Π½Π°Π»Ρ‹ рСгистрации) с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ошибка ΠΈΠ»ΠΈ ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π² Π»ΠΎΠ³ автоматичСски Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ трассировка стСка. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠžΡˆΠΈΠ±ΠΊΠΈ() Π² глобальном ΠΌΠΎΠ΄ΡƒΠ»Π΅.

    Π§Π΅ΠΌ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² 1Π‘ отличаСтся ΠΎΡ‚ стСка Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования?

    ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ β€” Π² 1Π‘ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² тСсно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ событий Ρ„ΠΎΡ€ΠΌ ΠΈΠ»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² 1Π‘ Π½Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ доступа ΠΊ стСку (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C++), Π½ΠΎ Π·Π°Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты для Π΅Π³ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅.

    МоТно Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²?

    НСт, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ прСдоставляСт API для прямого управлСния стСком. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ содСрТимоС Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΠžΠ‘ΠΈΡΡ‚Π΅ΠΌΠ΅.Π‘Ρ‚Π΅ΠΊΠ’Ρ‹Π·ΠΎΠ²ΠΎΠ²() ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для логирования ΠΈΠ»ΠΈ диагностики.