Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠžΡ‚Π»Π°ΜΠ΄ΠΊΠ° β€” этап Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚, Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ ошибки. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка, приходится :

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠœΠ΅ΡΡ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π·Π° врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ, выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Бпособности программиста ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ β€” это, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, ваТнСйший Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π² ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ источника ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ сильно зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка программирования ΠΈ инструмСнтов, Π² частности, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ².

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

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

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами Π² Ρ€ΡƒΠΊΠ°Ρ… программиста ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ:

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

«Наш Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ β€” ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ для просмотра стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ Π² дСталях слоТных структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠœΡ‹ считаСм ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ усилСнныС Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ сам сСбя Π² критичСских Ρ‚ΠΎΡ‡ΠΊΠ°Ρ….

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

Π‘Π»Π΅ΠΏΠΎΠ΅ Π±Π»ΡƒΠΆΠ΄Π°Π½ΠΈΠ΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅, скорСС всСго, Π½Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ. ПолСзнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ состояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ состояниС ΠΌΠΎΠ³Π»ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТными ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, особСнно для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Π²Ρ‹Π·ΠΎΠ²ΡƒΡ‚ скорСС Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ принСсут ΠΊΠ°ΠΊΡƒΡŽ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡŒΠ·Ρƒβ€¦Β»

Β«ΠžΡ‚Π»Π°Π΄ΠΊΠ° слоТна ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСпрСдсказуСмо Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя, поэтому Ρ†Π΅Π»ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π΅Ρ‘ Ρ‡Π°ΡΡ‚ΡŒ. ВСхничСскиС ΠΏΡ€ΠΈΡ‘ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… условий, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ исходных ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ разумности ΠΊΠΎΠ΄Π°, Π·Π°Ρ‰ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ интСрфСйсы, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ использованиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, автоматичСскиС срСдства контроля ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π“Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠΈ стоит Ρ‚ΠΎΠ½Π½Ρ‹ лСчСния.Β»

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΡΠ½ΠΈΠΆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅

Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π½ΡƒΠΆΠ½Π° Π±Ρ‹Π»Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΠΆΠ΅. Для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ:

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°?

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Visual Studio β€” ΠΎΡ‡Π΅Π½ΡŒ эффСктивноС срСдство. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π΅Π³ΠΎ использованию, слСдуСт ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Когда ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ вСсти Ρ€Π΅Ρ‡ΡŒ ΠΎ поискС ΠΈ устранСнии ошибок, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎ ΠΆΠ΅ самоС.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

Π’Π΅Ρ€ΠΌΠΈΠ½ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ½ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ устранСниС ошибок Π² ΠΊΠΎΠ΄Π΅. ДСлаСтся это ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. Код ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ посрСдством ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ β€” это узкоспСциализированноС срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ присоСдиняСтся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠΎΠ΄. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ для Visual Studio ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ подразумСваСтся ΠΏΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ.

Π Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прилоТСния

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС прилоТСния Π² Visual Studio Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ с Π·Π΅Π»Π΅Π½ΠΎΠΉ стрСлкой Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов (ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡΡ спискС слСва отобраТаСтся элСмСнт ΠžΡ‚Π»Π°Π΄ΠΊΠ°. Если Π²Ρ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Visual Studio, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° прилоТСния β€” это практичСски Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ запуск. На самом Π΄Π΅Π»Π΅ эти Π·Π°Π΄Π°Ρ‡ΠΈ Ρ…ΠΎΡ‚ΡŒ ΠΈ связаны, Π½ΠΎ ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

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

Если Ρƒ вас ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡΡ спискС ΠžΡ‚Π»Π°Π΄ΠΊΠ° элСмСнт Выпуск.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

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

Когда слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ β€” ваТнСйший инструмСнт для поиска ΠΈ устранСния ошибок Π² прилоТСниях. Однако большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ контСкст. Π’Π°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС срСдства, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² вашСм распоряТСнии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ошибки. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π»ΡƒΡ‡ΡˆΠΈΠΌ «ΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ» ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ написания ΠΊΠΎΠ΄Π°. Зная, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Π° ΠΊΠΎΠ³Π΄Π° β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ смоТСтС Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

Из этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ знакомству с процСссом ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Visual Studio ΠΈ написанию ΠΊΠΎΠ΄Π° с мСньшим количСством ошибок. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… приводятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π½Π° C#, Π½ΠΎ основныС понятия ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊΠΎ всСм языкам, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ срСдой Visual Studio.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

НСзависимо ΠΎΡ‚ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π² ΠΊΠΎΠ΄, создаваСмый Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях всС ΠΈΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎ ΠΏΠ»Π°Π½Ρƒ! Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ происходит. ΠŸΡ€ΠΈ этом вмСсто многочасового изучСния ΠΊΠΎΠ΄Π° Π² поисках ошибок Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ эффСктивнСС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдство ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ).

К соТалСнию, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ являСтся Ρ‚ΠΎΠΉ волшСбной ΠΏΠ°Π»ΠΎΡ‡ΠΊΠΎΠΉ, ΠΏΠΎ мановСнию ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ выявлСны Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ пошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² срСдствС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Visual Studio) Π² поисках Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ допустили ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ внСсти Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ исправлСния. ΠŸΡ€ΠΈ этом срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ внСсСниС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, благодаря Ρ‡Π΅ΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, задавая сСбС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ вопросы

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π² Ρ‡Π΅ΠΌ состоит ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ. ΠœΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΈΠ½Π°Ρ‡Π΅ вряд Π»ΠΈ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π±Ρ‹ сСйчас эту ΡΡ‚Π°Ρ‚ΡŒΡŽ Π² поисках совСтов ΠΏΠΎ Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅! Π˜Ρ‚Π°ΠΊ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ:

Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄?

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ вмСсто этого?

Если Π²ΠΎ врСмя выполнСния прилоТСния Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ошибкой ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ! Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° происходит Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ΅ событиС (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это ошибка ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Ρ€ΠΎΠ΄Π°). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ мСсту Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы исправлСния ситуации.

Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹? Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас прСдполоТСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°? НапримСр, Ссли ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст, Π½ΠΎ ΠΏΡ€ΠΈ этом тСкст содСрТит ошибки, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π² этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста содСрТит ошибки Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°. ΠŸΡ€ΠΈ пошаговом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±Ρ‹Π»ΠΈ присвоСны Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ значСния.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои прСдполоТСния

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π½ΡƒΠΆΠ½Ρ‹ΠΉ API (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ свойство)? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π°ΠΌΠΈ API Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅. (ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π° API Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ для исправлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ выявлСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ API Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.)

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ API? Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ API, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

НСт Π»ΠΈ Π² вашСм ΠΊΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ? НСкоторыС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки Π² написании ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с языками, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ трСбуСтся объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… использованиСм.

Вносили Π»ΠΈ Π²Ρ‹ измСнСния Π² ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Ρ‚ΡŒ связаны с возникшСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ?

Π”ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ пСрСмСнная ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ значСния) ΠΈ соотвСтствуСт Π»ΠΈ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ?

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Π»ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°? Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°, написанного Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, даСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС. Если это Π½Π΅ ваш ΠΊΠΎΠ΄, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для Π΅Π³ΠΎ эффСктивной ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²Π°ΠΌ потрСбуСтся ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚.

ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²! (Π’ этом Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°.) Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях для исправлСния большого слоТного Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ с малСнького сСгмСнта, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π² поисках Ρ‚ΠΎΡ‡ΠΊΠΈ возникновСния ошибки.

Анализируя собствСнныС прСдполоТСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° поиск ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ самих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ пошагового выполнСния Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ для поиска мСста возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ошибки ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС выполнСния ΠΊΠΎΠ΄Π° прилоТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ сообщСний.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ прилоТСния Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ (Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ) осущСствляСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ всСго, Ρ‡Ρ‚ΠΎ происходит Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² любой Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния, ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ состояниС ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ пошагового выполнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ строки ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Visual Studio, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 (Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ мСню ΠžΡ‚Π»Π°Π΄ΠΊΠ° > ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов «ΠžΡ‚Π»Π°Π΄ΠΊΠ°»). Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ ΠΏΠΎ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок Visual Studio Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ вас ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π΅Π³ΠΎ появлСния ΠΈ прСдоставит Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π‘ΠΌ. Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΈ инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Если ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ мСста Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. На этом этапС слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ смоТСтС ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ΠΎΡ‡ΠΊΠΈ останова β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых простых ΠΈ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ΠΎΡ‡ΠΊΠ° останова ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ Visual Studio слСдуСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ памяти ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² Visual Studio, достаточно Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π² Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ рядом с ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ вас строкой ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π² Π½ΡƒΠΆΠ½ΡƒΡŽ строку ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F9.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ содСрТит нСсколько ошибок. Π’ этом случаС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ C#, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для Visual Basic, C++, JavaScript, Python ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… языков. Π’Π°ΠΊΠΆΠ΅ прСдоставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Visual Basic, Π½ΠΎ снимки экрана ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ для C#.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Π° прилоТСния с ошибками

БСйчас ΠΌΡ‹ создадим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки.

УстановитС Visual Studio бСсплатно со страницы скачиваСмых ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Visual Studio, Ссли Π΅Ρ‰Π΅ Π½Π΅ сдСлали этого.

ЗапуститС Visual Studio.

Visual Studio создаст ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ (правая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ).

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Program.cs (ΠΈΠ»ΠΈ Program.vb) ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ всС Π΅Π³ΠΎ содСрТимоС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. (Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ для Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ языка: C# ΠΈΠ»ΠΈ Visual Basic.)

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список, содСрТащий Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ, расстояниС Π΄ΠΎ Π½Π΅Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ. ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ΄Π½ΠΎΠΉ строки списка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ, расстояниС, Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ.

Запуск прилоТСния

НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов «ΠžΡ‚Π»Π°Π΄ΠΊΠ°», которая располоТСна Π½Π°Π΄ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π°.

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ запуска прилоТСния ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ дСмонстрируСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² ΠΎΠΊΠ½ΠΎ консоли, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ оТиданиям. Π’ΠΎΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ.

ВмСсто этого выводятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ΄, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π² классС GType содСрТится Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Spiral), Π° Π½Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° прилоТСния

Π’ мСстС установки Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ появится красный ΠΊΡ€ΡƒΠ³.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ возникшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠ΅Ρ€Π΅Π΄ установкой Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (CTRL + SHIFT + F5).

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прилоТСния приостановится Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ останова. ΠœΠ΅ΡΡ‚ΠΎ приостановки ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ (ΠΏΡ€ΠΈ этом ТСлтая строка ΠΊΠΎΠ΄Π° Π½Π° этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠΊΠ½ΠΎ консоли Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Spiral. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π΅ Π²ΠΎ врСмя выполнСния прилоТСния. Π’ этом сцСнарии ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ API. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, смоТСм Π»ΠΈ ΠΌΡ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠΎΠ΄Π° Visual Basic, пропуститС нСсколько ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… шагов Π΄ΠΎ инструкции, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (CTRL + SHIFT + F5), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈ снова Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π΅Π΅ ΠΊΡ€ΡƒΠΆΠΎΠΊ Π² Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ (Ρ‚Π°ΠΊΠΆΠ΅ для этого ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π’ΠΎΡ‡ΠΊΠ° останова > Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова). ПослС этого Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F5 для продолТСния.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСтся ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Для Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ Small Magellanic Cloud, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Irregular, Π² консоли Π½Π΅ выводится Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ.

УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² этой строкС ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ инструкциСй switch (ΠΏΠ΅Ρ€Π΅Π΄ инструкциСй Select Π² Visual Basic).

Π—Π΄Π΅ΡΡŒ задаСтся Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ, поэтому Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ эту строку Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎ.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (CTRL + SHIFT + F5) для пСрСзапуска.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ приостановит Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² строкС ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²Ρ‹ Π·Π°Π΄Π°Π»ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ останова.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F11 (Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠžΡ‚Π»Π°Π΄ΠΊΠ° > Π¨Π°Π³ с Π·Π°Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π¨Π°Π³ с Π·Π°Ρ…ΠΎΠ΄ΠΎΠΌ Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов «ΠžΡ‚Π»Π°Π΄ΠΊΠ°»).

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши F11 ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Клавиша F10 (Π¨Π°Π³ с ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠΌ) ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ…ΠΎΠΆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ.

НаТимайтС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ F11 Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π² строкС ΠΊΠΎΠ΄Π° с инструкциСй switch для значСния «I» (инструкция Select для Visual Basic). Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΎΠΉ. Π’Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ дальшС Π΄ΠΎ мСста, Π³Π΄Π΅ для MyGType задаСтся Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ Irregular, ΠΎΠ΄Π½Π°ΠΊΠΎ вмСсто этого ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пропускаСт этот ΠΊΠΎΠ΄ ΠΈ приостанавливаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ default инструкции switch (инструкция Else для Visual Basic).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ снова.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС ошибки исправлСны ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

НаТмитС Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния.

Π‘Π²ΠΎΠ΄ΠΊΠ°

Если Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ пошагового выполнСния, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ F10 ΠΈ F11, для поиска области ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки.

Если Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π΅ удаСтся, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ ошибки, послС Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ пошагового выполнСния, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ проявится. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ трассировки для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний Π² ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°. Анализируя сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выводятся Π² ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π½Π΅ΠΌ, Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Для дальнСйшСго суТСния области поиска этот процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ нСсколько Ρ€Π°Π·.

Выявив ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ для Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния прилоТСния Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅.

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

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, выполняСт Π»ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅. (Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ инструкция switch, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏ Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠΈ Irregular, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Ρ‹Π» ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ.)

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

Из этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠ°ΠΊ процСсс

БущСствуСт ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 10% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ° β€” 90%. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡƒΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Π½ΠΎ любой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ согласится с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° β€” ΠΊΡ€Π°ΠΉΠ½Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎ рСсурсам процСсс, особСнно Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… систСмах.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, оптимизация ΠΈ систСматизация процСсса debugging’Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΎΡΠΈΡ‚ΡŒ вСсомыС ΠΏΠ»ΠΎΠ΄Ρ‹ Π² Π²ΠΈΠ΄Π΅ сэкономлСнных Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-часов, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², увСличСния Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Π‘Π΅Ρ€Π³Π΅ΠΉ Π©Π΅Π³Ρ€ΠΈΠΊΠΎΠ²ΠΈΡ‡ (dotmailer) Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ DotNext 2018 Piter ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠ°ΠΊ Π½Π° процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описан ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. Если Π²Ρ‹ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° поиска Π±Π°Π³ΠΎΠ² β€” ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ тСкстовая Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΠ»Π°Π΄Π° БСргСя.

(А Π΅Ρ‰Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅ поста ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π”ΠΆΠΎΠ½Π° Π‘ΠΊΠΈΡ‚Π° ΠΊΠΎ всСм Π΄ΠΎΡ‚Π½Π΅Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотритС)

Моя Ρ†Π΅Π»ΡŒ β€” ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос: ΠΊΠ°ΠΊ Ρ„ΠΈΠΊΡΠΈΡ‚ΡŒ Π±Π°Π³ΠΈ эффСктивно ΠΈ Π½Π° Ρ‡Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ фокус. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос β€” процСсс. ΠŸΡ€ΠΎΡ†Π΅ΡΡ debugging’Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ простых ΠΏΡ€Π°Π²ΠΈΠ», ΠΈ Π²Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡ… Π·Π½Π°Π΅Ρ‚Π΅, Π½ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ нСосознанно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ моя Π·Π°Π΄Π°Ρ‡Π° β€” это ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивными.

ΠœΡ‹ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ язык общСния Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ прямой ΠΏΡƒΡ‚ΡŒ ΠΊ поиску основных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. На своих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… я ΠΏΠΎΠΊΠ°ΠΆΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ ΠΈΠ·-Π·Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€Π°Π²ΠΈΠ».

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, любой debugging Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π±Π΅Π· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Моими Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

ΠŸΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ сСрвис

НачнСм с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· ΠΌΠΎΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ Π±Π΅ΡΡΠΈΡΡ‚Π΅ΠΌΠ½ΠΎΡΡ‚ΡŒ процСсса debugging’Π° Π²Π΅Π΄Π΅Ρ‚ ΠΊ нСэффСктивности.

НавСрно, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡˆΡŒ Π² Π½ΠΎΠ²ΡƒΡŽ компанию Π² Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚ΠΎ с самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дня хочСтся нанСсти Π½Π΅ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. Π’Π°ΠΊ Π±Ρ‹Π»ΠΎ ΠΈ Ρƒ мСня. Π’ Ρ‚ΠΎ врСмя Ρƒ нас Π±Ρ‹Π» сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» html, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ Π²Ρ‹Π΄Π°Π²Π°Π» ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

БСрвис Π±Ρ‹Π» для нас Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ ΠΈ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ это ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΡŒ. Но ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ я ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это.

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ, Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌ, сСрвис ΠΏΠ°Π΄Π°Π΅Ρ‚, ошибок Π½Π΅Ρ‚. Π—Π° этим процСссом ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Ρ€ΠΈ дня, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ приходят мысли ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π”Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ: ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° локальной машинС, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°ΠΌΠΏΡ‹ памяти ΠΈ Ρ‚Π΄. Казалось, Π΅Ρ‰Π΅ дня Π΄Π²Π° ΠΈ я ΠΏΠΎΡ„ΠΈΠΊΡˆΡƒ этот баг…

Π― смотрСл Π² PerformanceMonitor, Π³Π΄Π΅ Π²ΠΈΠ΄Π΅Π» сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌ поднимаСтся, ΠΏΠΎΡ‚ΠΎΠΌ снова ΠΏΠ°Π΄Π°Π΅Ρ‚. Π­Ρ‚ΠΎ состояниС называСтся отчаяниС ΠΈ выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’ этом Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ‚Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅ΡˆΡŒΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ ΠΆΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°? ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов ΠΌΠ΅Π΄ΠΈΡ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Π΄Ρ€ΡƒΠ³ обнаруТиваСтся:

ΠšΡ€Π°ΡΠ½Π°Ρ линия β€” это количСство Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… handle’ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π»Π°Π΄Π΅Π΅Ρ‚ процСсс. Нативный handle β€” это ссылка Π½Π° рСсурс ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы: Ρ„Π°ΠΉΠ», рССстр, ΠΊΠ»ΡŽΡ‡ рССстра, ΠΌΡŒΡŽΡ‚Π΅ΠΊΡ ΠΈ Ρ‚Π΄. По ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ нСпонятному ΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π² ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ роста количСства handle’ΠΎΠ² совпадаСт с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ падСния сСрвиса. Π­Ρ‚ΠΎ Π½Π°Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ Π½Π° ΠΌΡ‹ΡΠ»ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° handle’ΠΎΠ².

Π‘Π΅Ρ€Π΅ΠΌ Π΄Π°ΠΌΠΏ памяти, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Π² WinDbg. НачинаСм Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ освобоТдСны ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ самом ΠΊΠΎΠ½Ρ†Π΅ списка я нашСл web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

РСшСниС простоС β€” Π²Π·ΡΡ‚ΡŒ WebBrowser ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ dispose :

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈΠ· этой истории ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅: Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ β€” это Π΄ΠΎΠ»Π³ΠΎ ΠΈ слишком ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΉ dispose ; Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ нашли Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” Π²Π΅Π·Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Π½Π΅ Π±Ρ‹Π»ΠΎ систСмности.

ПослС этого Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊ вопрос: Π° ΠΊΠ°ΠΊ Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ эффСктивно ΠΈ Ρ‡Ρ‚ΠΎ для этого Π΄Π΅Π»Π°Ρ‚ΡŒ?

Для этого Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ всСго Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠžΡ‡Π΅Π½ΡŒ простоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, Ссли Ρ‚Ρ‹ Π½Π΅ моТСшь ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Ρ„ΠΈΠΊΡΠΈΡ‚ΡŒ Π½Π΅Ρ‡Π΅Π³ΠΎ. Но Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ случаи, особСнно это касаСтся Π±Π°Π³ΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС. Π£ нас ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π±Ρ‹Π»Π° ошибка, которая появлялась Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° процСссорах Itanium ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-сСрвСрах. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ пСрвая Π·Π°Π΄Π°Ρ‡Π° Π² процСссС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ β€” Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ тСстового стСнда, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹ ошибка Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ.

Если Ρ‚Ρ‹ Π½Π΅ исправил ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ исправлСна. Иногда Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅: Π² Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅ Π»Π΅ΠΆΠΈΡ‚ Π±Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появлялся ΠΏΠΎΠ» Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, ΡƒΠΆΠ΅ Π΅Π³ΠΎ Π΄Π°Π²Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π²ΠΈΠ΄Π΅Π», ΠΈ Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ просто Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ. Но Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ упускаСм шанс Π½Π° Π·Π½Π°Π½ΠΈΠ΅, шанс Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наша систСма ΠΈ Ρ‡Ρ‚ΠΎ с Π½Π΅ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ происходит. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ любой Π±Π°Π³ β€” это новая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ, ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ своСй систСмС.

Пойми систСму. Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ сказал ΠΊΠ°ΠΊ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΌΠ½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту систСму, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Π΄Π²ΠΎΠΉΠ½Π΅ ΡƒΠΌΠ½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‘ Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ.

НСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ. Наш ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ рисуСт Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ:

Π­Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ количСства запросов, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… нашим сСрвисом. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ посмотрСв Π½Π° Π½Π΅Π³ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ ΠΈΠ΄Π΅ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса. Π’ этом случаС Π³Ρ€Π°Ρ„ΠΈΠΊ поднимСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, удастся ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство сСрвСров.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ web-performance дСлаСтся просто: Π±Π΅Ρ€Π΅ΠΌ PerfView, запускаСм Π΅Π³ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-машинС, ΠΎΠ½ снимаСт trace Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 3-4 ΠΌΠΈΠ½ΡƒΡ‚, ΠΌΡ‹ этот trace Π·Π°Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ.

Одна ΠΈΠ· статистик, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ PerfView β€” garbage collector.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π² Π½Π° эту статистику ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ 85% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сСрвис Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° сборку мусора. МоТно Π² PerfView ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π³Π΄Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ тратится это врСмя.

Π’ нашСм случаС β€” это созданиС строк. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ само самой: замСняСм всС string’ΠΈ Π½Π° StringBuilder’Ρ‹. Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° 20-30%. Π”Π΅ΠΏΠ»ΠΎΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, смотрим Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² сравнСнии со старым Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ «Пойми систСму» β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π² вашСй систСмС происходят взаимодСйствия, ΠΊΠ°ΠΊ ходят сообщСния, Π° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою систСму.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ. Но Ссли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° всю систСму с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, Ρ‚ΠΎ окаТСтся, Ρ‡Ρ‚ΠΎ пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ нашСй систСмы зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° β€” ΠΎΡ‚ скорости ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° Π½ΠΎΠ²Ρ‹Ρ… сообщСний. По Ρ„Π°ΠΊΡ‚Ρƒ Π² систСмС просто Π½Π΅ Π±Ρ‹Π»ΠΎ большС 80 сообщСний Π΅Π΄ΠΈΠ½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, поэтому ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π΅ получится Π½ΠΈΠΊΠ°ΠΊ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΡˆΡ‚Π΅ΠΏΡΠ΅Π»ΡŒ. Если ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ любого домашнСго ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°, Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ написано: Ссли ΠΏΡ€ΠΈΠ±ΠΎΡ€ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ»ΠΊΠ° вставлСна Π² Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΡƒ. ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ часто ловлю сСбя Π½Π° мысли, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ просто ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ просто Π·Π°Π±Ρ€Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Β«ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΡˆΡ‚Π΅ΠΏΡΠ΅Π»ΡŒΒ» β€” это ΠΏΡ€ΠΎ Ρ„Π°ΠΊΡ‚Ρ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅. ΠžΡ‚Π»Π°Π΄ΠΊΠ° Π½Π΅ начинаСтся с запуска WinDbg ΠΈΠ»ΠΈ PerfView Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΎΠ½Π° начинаСтся с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Если сСрвис Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ½ просто Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½.

РаздСляй ΠΈ властвуй. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎ, СдинствСнноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠ°ΠΊ процСсс. Оно ΠΏΡ€ΠΎ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹, ΠΈΡ… Π²Ρ‹Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

Один ΠΈΠ· Π½Π°ΡˆΠΈΡ… сСрвисов Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Π”Π΅Π»Π°Π΅ΠΌ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ бСсконСчно Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² β€” это Π²Π·ΡΡ‚ΡŒ Π΄Π°ΠΌΠΏ памяти. Из Π΄Π°ΠΌΠΏΠ° вытаскиваСм call-stack’ΠΈ всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π”Π΅Π»Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ нас deadlock ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· WinDbg ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ-ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΎΠ΄Π½Π° ΠΈΠ· Π·Π°Π΄Π°Ρ‡ ΡƒΠΏΠ°Π»Π°, Π° вторая β€” Π½Π΅Ρ‚. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Он ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ инициализационная Π·Π°Π΄Π°Ρ‡Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ connection ΠΈ послС этого выставляСт TaskCompletionSource Π² true. А Ρ‡Ρ‚ΠΎ, Ссли здСсь ΡƒΠΏΠ°Π΄Π΅Ρ‚ Exception? Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ успСваСм Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ SetResult Π² true, поэтому fix ΠΊ этому Π±Π°Π³Ρƒ Π±Ρ‹Π» Ρ‚Π°ΠΊΠΎΠΉ:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π»ΠΈ Π΄Π²Π΅ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹: ΠΎ бСсконСчном Ρ†ΠΈΠΊΠ»Π΅ ΠΈ ΠΎ deadlock’e. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ «раздСляй ΠΈ властвуй» ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ приблиТСниями ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Π² этом ΠΏΡ€Π°Π²ΠΈΠ»Π΅ β€” это Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹. И Π² зависимости ΠΎΡ‚ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ ΠΌΡ‹ примСняСм Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия.

ОсвСТись. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ просто Π²ΡΡ‚Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° стола ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ, Π²Ρ‹ΠΏΠΈΡ‚ΡŒ Π²ΠΎΠ΄Ρ‹, сока ΠΈΠ»ΠΈ ΠΊΠΎΡ„Π΅, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΎΡ‚Π²Π»Π΅Ρ‡ΡŒΡΡ ΠΎΡ‚ своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π•ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΡƒΡ‚ΠΎΡ‡ΠΊΠ°Β». Богласно ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΡƒΡ‚ΠΎΡ‡ΠΊΠ΅. Π’ качСствС ΡƒΡ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³Ρƒ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Π΅ΠΌΡƒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ, достаточно ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒΡΡ. И Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ, послС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚Ρ‹ сам Π½Π°Ρ…ΠΎΠ΄ΠΈΡˆΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π­Ρ‚ΠΎ Ρ‚Π²ΠΎΠΉ Π±Π°Π³. Об этом ΠΏΡ€Π°Π²ΠΈΠ»Π΅ расскаТу Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Для мСня это Π²Ρ‹Π»ΠΈΠ»ΠΎΡΡŒ Π² 11 мСсяцСв Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Microsoft, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ, Π½ΠΎ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ fix’Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ 11 мСсяцСв. ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΈΠΌ дСсятки Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ Π΄Π°ΠΌΠΏΠΎΠ² памяти, ΠΌΡ‹ ставили сотни private-сборок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. И всС это врСмя ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Π° Microsoft, Π° Π½Π΅ ΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Π°Π³ всСгда ваш.

ΠŸΡΡ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠœΡ‹ Ρƒ сСбя Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Elastic. Elastic Ρ…ΠΎΡ€ΠΎΡˆ для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΎΠ².

Π’Ρ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡˆΡŒ с ΡƒΡ‚Ρ€Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Elastic Π»Π΅ΠΆΠΈΡ‚.

Вопросы Β«ΠΏΠΎΡ‡Π΅ΠΌΡƒ?Β» ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΌΠΎΠ³Π»ΠΈ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ, Π½ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ fix выглядит Ρ‚Π°ΠΊ: обновляСм ΠΏΠ»Π°Π³ΠΈΠ½, запускаСм сСрвисы, Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² Π² кластСр, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² достаточности памяти Π½Π° Master Nodes.

Алгоритм ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ я ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» Π² ΠΊΠ½ΠΈΠ³Π΅ Π”ΠΆΠΎΠ½Π° Роббинса Β«Debugging applicationsΒ». Он описываСт процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½ своим Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ β€” Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с Π³ΠΈΠΏΠΎΡ‚Π΅Π·ΠΎΠΉ.

Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²ΠΈΡ‚ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сСбя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ: Π·Π½Π°Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ большС ΠΎ систСмС ΠΈΠ»ΠΈ Π½Π΅Ρ‚? Если ΠΌΡ‹ Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹, провСряСм, ΠΎΠ½ΠΈ Π½Π΅ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, ΠΌΡ‹ Π½Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы, Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎ, ΠΏΠΎΡ€Π° ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒΡΡ. Π”Π²Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вопроса Π½Π° этот ΠΌΠΎΠΌΠ΅Π½Ρ‚: ΠΊΠ°ΠΊΠΈΠ΅ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ Ρ‚Ρ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΈ ΠΊΠ°ΠΊΡƒΡŽ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΡˆΡŒ сСйчас.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ согласуСтся с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅: ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ β€” это Ρ‚Π²ΠΎΠΉ Π±Π°Π³, опиши ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” ΠΏΠΎΠΉΠΌΠΈ систСму, сформулируй Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ β€” раздСляй ΠΈ властвуй, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΡˆΡ‚Π΅ΠΏΡΠ΅Π»ΡŒ, ΡƒΠ±Π΅Π΄ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ исправлСно β€” ΠΏΡΡ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

На этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρƒ мСня Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. На ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… web-сСрвисов ΠΏΠ°Π΄Π°Π» exception.

ΠŸΠ΅Ρ€Π²Π°Ρ наша ΠΌΡ‹ΡΠ»ΡŒ β€” это Π½Π΅ наша ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Но ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, это всС-Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° наша.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, пытаСмся ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ http-запрос Π½Π° наш сСрвис Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° StructureMap пытаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π² этом случаС происходит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ StructureMap β€” это wrapper ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΈΠ΄Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ procdump.exe.

Π˜ΡΡΠ»Π΅Π΄ΡƒΡ call-stack этого ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ object-builder’Π° Π² самом StructureMap.

Но NullReferenceException β€” это Π½Π΅ сама ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π° слСдствиС. НуТно ΠΏΠΎΠ½ΡΡ‚ΡŒ Π³Π΄Π΅ ΠΎΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈ ΠΊΡ‚ΠΎ Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚.

Π˜Ρ‚Π°ΠΊ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ β€” это ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сущСствСнно экономит врСмя. Он Π΄Π΅Π»Π°Π΅Ρ‚ ΡƒΠΏΠΎΡ€ Π½Π° Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ β€” Π° это самоС Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

ΠŸΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

По своСй сути проактивная ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопрос Β«Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° появится Π±Π°Π³Β».

Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΆΠΈΠ·Π½ΠΈ Π±Π°Π³Π°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ дольшС Π±Π°Π³ ΠΆΠΈΠ²Π΅Ρ‚, Ρ‚Π΅ΠΌ большС ΠΌΡ‹ рСсурсов (Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) Π½Π° Π½Π΅Π³ΠΎ Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ.

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΡƒΡŽΡ‚ нас Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π±Π°Π³ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ дальшС с Π½ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ. На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ свой фокус Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания Π±Π°Π³Π°. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Minimum Debuggable Product (MDP), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ инфраструктуры для эффСктивной ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.

MDP состоит ΠΈΠ· Π΄Π²ΡƒΡ… Π²Π΅Ρ‰Π΅ΠΉ: фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ USE ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ЀитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Ρ‹Π»ΠΈ популяризированы Нил Π€ΠΎΡ€Π΄ΠΎΠΌ ΠΈ соавторами Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Building Evolutionary Architectures Β». По своСй сути фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎ мнСнию Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠ½ΠΈΠ³ΠΈ, выглядят Ρ‚Π°ΠΊ: Π΅ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΡƒΠ³Π»Π°ΠΌΠΈ, получая Ρ‚Π°ΠΊΠΈΠ΅ свойства Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΊΠ°ΠΊ maintainability, performance ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅, ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π΅Π· ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСст β€” фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, фитнСс-функция β€” это тСст Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

Π’ случаС MDP, фитнСс-функция β€” это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° debuggability. Для написания Ρ‚Π°ΠΊΠΈΡ… тСстов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: NUnit, MSTest ΠΈ Ρ‚Π΄. Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° β€” это, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ, Ρ€Π°Π±ΠΎΡ‚Π° с внСшними tool’Π°ΠΌΠΈ, я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использованиС Pester’Π° (powershell unit testing framework). Π•Π³ΠΎ плюс здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой.

НапримСр, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΡ‹ договариваСмся, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для логирования; ΠΏΡ€ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹; pdb-символы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π°Π½Ρ‹ всСгда Π½Π° symbol server. Π­Ρ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌΠΈ условностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π² Π½Π°ΡˆΠΈΡ… тСстах.

Π­Ρ‚ΠΎΡ‚ тСст провСряСт, Ρ‡Ρ‚ΠΎ всС pdb-символы Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π΄Π°Π½Ρ‹ Π½Π° symbol server ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π΄Π°Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π½ΠΎΠΌΠ΅Ρ€Π° строк Π²Π½ΡƒΡ‚Ρ€ΠΈ. Для этого Π±Π΅Ρ€Π΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ всС exe- ΠΈ dll-Ρ„Π°ΠΉΠ»Ρ‹, пропускаСм всС эти Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ syschk.exe, которая Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Β«Debugging tools for windowsΒ». Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° syschk.exe свСряСт Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ с symbol server’ΠΎΠΌ ΠΈ, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΌ pdb-Ρ„Π°ΠΉΠ», ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎΠ± этом. Π’ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ строку Β«Line numbers: TRUEΒ». И Π² Ρ„ΠΈΠ½Π°Π»Π΅ провСряСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» Π½Π΅ Β«null or emptyΒ».

Π’Π°ΠΊΠΈΠ΅ тСсты Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² continuous deployment pipeline. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты ΠΈ unit-тСсты, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠΎΠΊΠ°ΠΆΡƒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² ΠΊΠΎΠ΄Π΅.

Π’ тСстС ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ всС Ρ„Π°ΠΉΠ»Ρ‹ packages.config ΠΈ пытаСмся Π½Π°ΠΉΡ‚ΠΈ Π² Π½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ nlog. Аналогично ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ поля nlog ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»Π΅ correlation id.

USE ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ПослСднСС, ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит MDP β€” это ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° USE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» популяризирован Π‘Ρ€Π΅Π½Π΄Π°Π½ΠΎΠΌ Π“Ρ€Π΅Π³Π³ΠΎΠΌ. ИдСя простая: Ссли Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, достаточно Π²Π·ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: utilization (использованиС), saturation (насыщСниС), errors (ошибки), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ Π³Π΄Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

НСкоторыС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Circonus (ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ monitoring soft), свои Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚ΠΎ использованиС β€” это количСство свободной памяти, насыщСниС β€” это количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ диску, ошибки β€” это Π»ΡŽΠ±Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появлялись. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ USE-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ для всСх Ρ„ΠΈΡ‡ ΠΈ всСх частСй подсистСмы.

Если Π²Π·ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ бизнСс-Ρ„ΠΈΡ‡Ρƒ, Ρ‚ΠΎ, скорСС всСго, Π² Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:

ΠŸΠ΅Ρ€Π²Π°Ρ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ сдСлали, β€” сСрвис ΡƒΠΏΠ°Π» ΠΈ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ оказываСтся, Ρ‡Ρ‚ΠΎ сСрвис Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 4-5% CPU.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Вторая Π³ΠΈΠΏΠΎΡ‚Π΅Π·Π° β€” Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвиса ΠΏΠ°Π΄Π°Π΅Ρ‚ ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ etrace.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° позволяСт Π² realtime ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ ETW-events ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° экран.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Π° β€” ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡΡŠΠ΅Π΄Π°Π΅Ρ‚ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ. Богласно Π΄Π°ΠΌΠΏΡƒ памяти, большС всСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² находится Π² кэшС.

Из ΠΊΠΎΠ΄Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ час кэш Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒΡΡ. Но памяти ΡƒΠΆΠ΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ, Π΄ΠΎ очистки Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ USE для кСша.

По Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ сразу Π²ΠΈΠ΄Π½ΠΎ β€” возросла ΠΏΠ°ΠΌΡΡ‚ΡŒ, сразу Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ ошибки.

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ проактивная ΠΎΡ‚Π»Π°Π΄ΠΊΠ°.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ρ„ΠΈΠΊΡΠΈΡ‚ΡŒ Π±Π°Π³ΠΈ эффСктивно?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *