Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Β«VKΒ» Π΄Π»Ρ Android Π½Π°ΡΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
1. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» Β«ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΒ» ΡΠ΅ΡΠ΅Π· Π»Π΅Π²ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Β«Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅Β» ΠΈ Π² ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ Π±ΠΎΠΊΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±Π°ΠΊΠΈ (Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ).
2. ΠΡΠΊΡΠΎΠΉΡΠ΅ Β«Π’Π΅Π»Π΅ΡΠΎΠ½Β» ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ: Β«*#*#856682583#*#*Β».
Π£ΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΎΡΡΡΠ³ΠΈΠ²Π°Π΅Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ
37Β 177 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ²
{«id»:3346,»url»:»https:\/\/tjournal.
{«url»:»https:\/\/booster.osnova.io\/a\/relevant?site=tj»,»place»:»entry»,»site»:»tj»,»settings»:{«modes»:{«externalLink»:{«buttonLabels»:[«\u0423\u0437\u043d\u0430\u0442\u044c»,»\u0427\u0438\u0442\u0430\u0442\u044c»,»\u041d\u0430\u0447\u0430\u0442\u044c»,»\u0417\u0430\u043a\u0430\u0437\u0430\u0442\u044c»,»\u041a\u0443\u043f\u0438\u0442\u044c»,»\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c»,»\u0421\u043a\u0430\u0447\u0430\u0442\u044c»,»\u041f\u0435\u0440\u0435\u0439\u0442\u0438″]}},»deviceList»:{«desktop»:»\u0414\u0435\u0441\u043a\u0442\u043e\u043f»,»smartphone»:»\u0421\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b»,»tablet»:»\u041f\u043b\u0430\u043d\u0448\u0435\u0442\u044b»}},»isModerator»:false}
ΠΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡΠ»ΠΊΠ°
ΠΠ΄Π½ΠΎ ΠΏΠΈΡΡΠΌΠΎ Ρ Π»ΡΡΡΠΈΠΌ Π·Π° Π½Π΅Π΄Π΅Π»Ρ
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΡΡΡ
ΠΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠΈΡΡΠΌΠΎ Π΄Π»ΡΒ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ
ΠΡΠ»Π°Π΄ΠΊΠ° ΠΠ β ΡΡΠ°ΡΡΠΈ Π½Π° ΡΠ΅ΠΌΡ | 4iDroid.
comΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android
Β 20.09.2016 Β ΠΠ³ΠΎΡ ΠΠ»ΠΎΡΠ½ΠΈΡΠΊΠΈΠΉ Β 20
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π²ΡΡΠ»Π° ΡΡΠ°ΡΡΡ Β«ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π½Π° AndroidΒ». ΠΠ· Π½Π΅Ρ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΠΈΠ³ΡΠ°Ρ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ (ΠΏΡΠΈΡΠ΅ΠΌ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· root ΠΏΡΠ°Π²), Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ. Π ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android.
ΠΠ΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ° ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android
Β 26. 07.2015 Β ΠΠ³ΠΎΡ ΠΠ»ΠΎΡΠ½ΠΈΡΠΊΠΈΠΉ Β 25
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ ΠΎ ΡΠΎΠΌ Π² ΠΊΠ°ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android Π΅ΡΡΡ Β«Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΉ ΡΠ΅ΠΆΠΈΠΌΒ» ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠ!
ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android
Β 20.09.2016
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π²ΡΡΠ»Π° ΡΡΠ°ΡΡΡ Β«ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π½Π° AndroidΒ». ΠΠ· Π½Π΅Ρ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΠΈΠ³ΡΠ°Ρ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ (ΠΏΡΠΈΡΠ΅ΠΌ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· root ΠΏΡΠ°Π²), Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ. Π ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android.
ΠΠ΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ° ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android
Β 26.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ ΠΎ ΡΠΎΠΌ Π² ΠΊΠ°ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android Π΅ΡΡΡ Β«Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΉ ΡΠ΅ΠΆΠΈΠΌΒ» ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠ!
ο»ΏΒ© 2012-2021 β’ 4iDroid.com
ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android
ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠΊΠ°Π· ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ ΡΠΌΠ°ΡΡΡΠΎΠ½ΠΎΠ² ΠΈ ΠΏΠ»Π°Π½ΡΠ΅ΡΠΎΠ² Π½Π° Android
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ°ΠΌΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ β ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π£ Π½Π°Ρ ΡΡΠ° ΡΠΎΡΡΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ, ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ ΠΈ ΠΏΠ»Π°Π½ΡΠ΅ΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ²ΠΎΠ΅ ΡΡΡΠΎ Ρ ΡΡΠ΅Π½ΠΈΡ Π»Π΅Π½ΡΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ Π΄ΡΡΠ·Π΅ΠΉ ΠΈ Π³ΡΡΠΏΠΏ, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΈ Π²ΠΎΠ²ΡΠ΅ ΠΊΡΡΠ³Π»ΠΎΡΡΡΠΎΡΠ½ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½.
Β
Π‘ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android ΠΈ iOS Π½Π°ΡΠ°Π»Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°, Π΅Π΅ Π½Π°Π·ΡΠ²Π°ΡΡ «Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ». Π― Π΄ΡΠΌΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π», ΠΎΠ½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΠΠ΅Π½ΡΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ . Π§Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΡΠ΄Π° Π½Π΅ Π³Π»ΡΠ½Ρ, Π²Π΅Π·Π΄Π΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° β ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π½Π° Π’Π (ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5-10 ΠΌΠΈΠ½ΡΡ), ΡΠ°Π΄ΠΈΠΎ, Π³Π°Π·Π΅ΡΠ°Ρ , Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΡΠΆΠ΅ Π΄Π°ΠΆΠ΅ Π½Π°ΡΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°Π±ΠΈΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ΅ΠΉ β ΠΎΠ½Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΠ»ΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°Π»Π°ΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ.
ΠΠΎ ΠΊ ΡΡΠ°ΡΡΡΡ, ΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»ΡΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½ΠΎΠ² ΠΈ ΠΏΠ»Π°Π½ΡΠ΅ΡΠΎΠ² Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Android Π²ΠΎΠΏΡΠΎΡ Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠΉ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΡ ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°Ρ
iPhone ΠΈ iPad β Ρ
ΠΎΡΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 2.0 ΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π΅
.
ΠΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ.
Π¨Π°Π³ 1 ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅
Π¨Π°Π³ 2 ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΌΠ΅Π½Ρ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ
Β
Π¨Π°Π³ 3 ΠΠΏΡΡΡΠΈΡΠ΅ΡΡ Π²Π½ΠΈΠ· ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΠΎΠΊΠ½ΠΎ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡ Ρ ΡΠΎΠ±Π°ΡΠΊΠΎΠΉ 3 ΡΠ°Π·Π°, ΠΊΠ°ΠΊΠΈΡ
Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΡ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅
Π¨Π°Π³ 4 ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ» ΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π’Π΅Π»Π΅ΡΠΎΠ½. ΠΡΠ»ΠΈ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΠ»Π°Π½ΡΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Google Play Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π²ΠΎΠ½ΠΊΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π² ΠΏΠΎΠ»Π΅ Π½Π°Π±ΠΎΡΠ° Π½ΠΎΠΌΠ΅ΡΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄: *#*#856682583#*#*
Π¨Π°Π³ 5 ΠΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠ΄Π°, ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π±ΡΠΎΡΠ΅Π½Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² «ΠΠ — ΠΎΡΠ»Π°Π΄ΠΊΠ°». ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Π΄Π»Ρ ΠΏΡΠ½ΠΊΡΠ° ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π»Π΅Π½ΡΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ Π±Π΅Π· Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΠΎΠΉ ΡΠ΅ΠΊΠ»Π°ΠΌΡ. ΠΠ°Π½Π½Π°Ρ Π±ΡΠ΅ΡΡ ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Π»ΡΠ±ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΠΊΡΠΎ Π΅Π³ΠΎ Π·Π½Π°Π΅Ρ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ±Π΅ΡΡΡ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ.
ΠΡΡΠ°ΡΠΈ, Π΅ΡΠ»ΠΈ ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ Π΄ΡΡΠ·ΡΡ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Π°Ρ ΠΎΠ½Π»Π°ΠΉΠ½, ΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ «ΠΠ — ΠΎΡΠ»Π°Π΄ΠΊΠ°» Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ½ΠΊΡ ΠΠ΅Π²ΠΈΠ΄ΠΈΠΌΠΊΠ°.
Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΎ ΡΡΠ°ΡΡΠ΅ ΡΠ²ΠΎΠΈΠΌ Π΄ΡΡΠ·ΡΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΡΠΏΠ°ΠΉΡΠ΅ Π² Π½Π°ΡΠΈ Π³ΡΡΠΏΠΏΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡ
, Π³Π΄Π΅ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
Β
Π Π°ΡΡΠΊΠ°Π·Π°ΡΡ Π΄ΡΡΠ·ΡΡΠΌ : 
ΠΠ°ΠΊ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΠ΅Ρ VK, FB ΠΈ Telegram Π΄Π»Ρ Opengraph-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ β ΠΠΈΡΠΈΠ»Π» ΠΡΡΡΡΠ½ΠΎΠ²
ΠΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π²ΡΒ ΡΠ°ΡΡΠ°ΡΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π°Β ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ Π²Β ΡΠΎΡΡΠ΅ΡΡΡ , ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π½Π°Β ΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ-ΠΏΡΠ΅Π²ΡΡ ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π°Β ΡΠΎΡΡΠ΅ΡΠΈ Π½Π΅Β ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΒ ΡΡΡΠ»ΠΊΠ΅ ΠΈΒ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΅ΡΒ ΡΒ ΡΠ΅Π±Ρ Π²Β ΠΊΠ΅ΡΠ΅, ΠΈΒ Π²Β ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΡΠΆΠ΅ Π±Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·Β ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ΅ΡΠ°. ΠΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΡΠ΅ΡΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΒ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠ»ΠΊΠ΅?
Π‘Π±ΡΠΎΡΠΈΡΡ ΠΊΠ΅Ρ Π²Β Π€Π΅ΠΉΡΠ±ΡΠΊΠ΅
https://developers.facebook.com/tools/debug/
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΒ ΡΡΡΠ»ΠΊΠ΅Β β ΡΡΠΎ Π΄Π΅Π±Π°Π³-ΠΏΠ°Π½Π΅Π»Ρ Π€Π΅ΠΉΡΠ±ΡΠΊΠ°. ΠΒ ΡΠΎΡΠΌΠ΅ ΡΠ²Π΅ΡΡ Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π°Β ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΡ ΠΈΒ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Β».
ΠΠ΅Π±Π°Π³-ΠΏΠ°Π½Π΅Π»Ρ Π΄Π»Ρ ΡΠ±ΡΠΎΡΠ° ΠΊΠ΅ΡΠ° Π€Π΅ΠΉΡΠ±ΡΠΊΠ°Π‘Π±ΡΠΎΡΠΈΡΡ ΠΊΠ΅Ρ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅
https://vk. com/dev/pages.clearCache
ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌ Π²Π½ΠΈΠ· ΠΊΒ ΡΠΎΡΠΌΠ΅ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΅ΡΒ ΠΈΒ ΠΆΠΌΡΠΌ Β«ΠΡΠΏΠΎΠ»Π½ΠΈΡΡΒ». ΠΒ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° Π²ΡΒ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π°Π΄ΠΏΠΈΡΡ response: 1. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π²Π°ΡΡ ΡΡΡΠ»ΠΊΡ ΡΒ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠ΅Π²ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ±ΡΠΎΡΠ° ΠΊΠ΅ΡΠ° ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΒ β ΡΡΠΏΠ΅ΡΠ½ΠΎ (response: 1)Π‘Π±ΡΠΎΡΠΈΡΡ ΠΊΠ΅Ρ Π΄Π»Ρ Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΠ°
ΠΠΈΡΠ΅ΠΌ Π±ΠΎΡΡ @WebpageBot, Π΄Π°Π»Π΅Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ: ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΡΡΠ»ΠΊΡ Π±ΠΎΡΡ, Π΄Π°Π»ΡΡΠ΅ ΠΎΠ½Β ΡΠ°ΠΌ Π²ΡΡ ΡΠ΄Π΅Π»Π°Π΅Ρ. ΠΒ ΠΎΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΡΠ»ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π°Β ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²ΡΒ Π²Β ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π½ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΠ΅ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π±ΠΎΡΠ°ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΡΠΏΡΠ°Π²ΠΈΡΡ
Π’Π²ΠΈΡΠ½ΡΡΡ
ΠΠΎΡΡΠ°ΠΏΠ½ΡΡΡ
Π Π΅ΠΉΡΠΈΠ½Π³ 4.9 Π½Π°Β ΠΎΡΠ½ΠΎΠ²Π΅ 10Β ΠΎΡΠ΅Π½ΠΎΠΊ
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΡΠ°ΠΉΡΡ ΠΈΒ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Laravel, Vue, WordPress. ΠΡΠ±Π»Ρ ΡΠ²ΠΎΡ Π΄Π΅Π»ΠΎ ΠΈΒ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΡΠΈΠΌ ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ 8Β Π»Π΅Ρ. Π‘Π΄Π΅Π»Π°Ρ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΒ β ΠΏΠΈΡΠΈΡΠ΅!
ΠΡΠ»ΠΈ Π²ΡΒ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠΎΒ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π°Β ΡΠ΅ΠΉΡΠ±ΡΠΊ ΠΈΒ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π», ΡΡΠΎΠ±Ρ Π½Π΅Β ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ
- Π§ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 2Β ΠΌΠΈΠ½
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Visual C++, Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.To prepare a computer to test the debug version of an application that is built with Visual C++, you have to deploy debug versions of the Visual C++ library DLLs that the application depends on. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Visual C++.To identify which DLLs have to be deployed, follow the steps in Understanding the Dependencies of a Visual C++ Application. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π°, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ Π½Π° «d». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ»Π°Π΄ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ msvcr100.dll Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ msvcr100d.dll.Typically, debug versions of Visual C++ library DLLs have names that end in «d»; for example, the debug version of msvcr100.dll is named msvcr100d.dll.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++, Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠΌΠΈ.Debug versions of an application are not redistributable, and debug versions of the Visual C++ library DLLs are not redistributable. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ²ΠΎΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Visual Studio. You may deploy debug versions of applications and Visual C++ DLLs only to your other computers, for the sole purpose of debugging and testing the applications on a computer that does not have Visual Studio installed. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Visual C++.For more information, see Redistributing Visual C++ Files.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.There are three ways to deploy debug versions of Visual C++ library DLLs together with the debug version of an application.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL Visual C++ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ %windir%\system32, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Use central deployment to install a debug version of a particular Visual C++ DLL to the %windir%\system32\ directory by using a Setup project that includes merge modules for the right library version and architecture of your application. ΠΠΎΠ΄ΡΠ»ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Program Files ΠΈΠ»ΠΈ Program Files (x86) Π²Π½ΡΡΡΠΈ \Common Files\Merge Modules\.Merge modules are found in the Program Files or Program Files (x86) directory in \Common Files\Merge Modules\. ΠΡΠ»Π°Π΄ΠΎΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠ²ΠΎ Debug Π² ΠΈΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Microsoft_VC110_DebugCRT_x86.msm.The debug version of a merge module has Debug in the namefor example, Microsoft_VC110_DebugCRT_x86.msm. ΠΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ. Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Visual C++ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.An example of this deployment may be found in Walkthrough: Deploying a Visual C++ Application By Using a Setup Project.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Visual C++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΠΉΠ»Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Program Files ΠΈΠ»ΠΈ Program Files (x86) Π² \Microsoft Visual Studio <version> \Π²ΠΊ\ΡΠ΅Π΄ΠΈΡΡ\ Debug_NonRedist \ .Use local deployment to install a debug version of a particular Visual C++ DLL in the application’s installation directory by using files that are provided in the Program Files or Program Files (x86) directory in \Microsoft Visual Studio <version>\VC\redist\Debug_NonRedist\.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Visual Studio 2005 ΠΈΠ»ΠΈ Visual Studio 2008 Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Visual C++ Library ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.For remote debugging of your application built by using Visual Studio 2005 or Visual Studio 2008 on another computer, you have to deploy debug versions of Visual C++ library DLLs as shared side-by-side assemblies. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Windows Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ»ΠΈΡΠ½ΠΈΡ.You can use either a Setup project or Windows Installer to install corresponding merge modules.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Visual Studio, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.Use the_ Deploy option in the Configuration Manager dialog box in Visual Studio to copy the project output and other files to the remote computer.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL Visual C++, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.After Visual C++ DLLs are installed, you can run a remote debugger on a network share. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π£Π΄Π°Π»Π΅Π½Π½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ°.For more information about remote debugging, see Remote Debugging.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»See also
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π² Visual C++Deployment in Visual C++
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ° WindowsWindows Installer Command line options
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡDeployment Examples
Remote DebuggingRemote Debugging
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠΊΡΠΈ Π² VK Coffee
VK Coffee β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ»Π°Π²Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» VK Coffee
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π΅Π½, ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ;
- ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° Online Π½Π° Offline ΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ;
- Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΠΊΡΡΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ;
- ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Pin-ΠΊΠΎΠ΄Π°;
- ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΡΠ»ΡΡΠΈΠ°ΠΊΠΊΠ°ΡΠ½ΡΠ°;
- ΠΎΠ±Ρ ΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΡΡΠΊΡ ΠΊΠ΅ΡΠ° ΠΏΡΡΠΌΠΎ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ ;
- ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΡ.
ΠΠ° ΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ProxySellerΒ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ Π΄Π»Ρ ΠΠ. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠΌΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡΒ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Π½Π°ΡΠ΅ΠΌ ΠΎΠ±Π·ΠΎΡΠ΅Β Π’ΠΠ-5 ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Firefox.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ VK Coffee
- ΠΠΎΡΠ»Π΅ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Android Π·Π°ΠΉΡΠΈ Π² ΠΎΠ±ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠ½ΠΊΡ Β«ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΒ»:
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Β«ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΒ»:
- ΠΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠΊΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΡΡΠΈΡΡΠ²Π°Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ) ΠΈΠ»ΠΈ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠΊΡΠΈ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΡΡΠ°:
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ VK Coffee ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΉΡΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΈ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡ Π΅ΠΌΠ΅: Β«ΠΡΠ»Π°Π΄ΠΊΠ°Β» β Β«ΠΡΠ·Π²Π°ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» β Β«ΠΠΎΠΌΠ΅Π½ APIΒ». Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΉΡΡ ΡΡΡΠΎΠΊΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Β«vk-api-proxy.xtrafrancyz.netΒ», Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΡ Β«ΠΠΊΒ» ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π±Π΅ΡΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΌΡΡ Π² ΡΠ΅Π³ΠΈΠΎΠ½Π°Ρ Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ Π΅ΡΠ΅ ΠΈ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π°ΠΊΡΡΡΠΊΠΈ Π½Π° Twitch.
ΠΡΠ»Π΅Π·Π°Π΅Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π² Π²ΠΊ ΠΊΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ. ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π΄Π»Ρ Android
Β». ΠΠ· Π½Π΅Ρ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΠΈΠ³ΡΠ°Ρ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ (ΠΏΡΠΈΡΠ΅ΠΌ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· root ΠΏΡΠ°Π²), Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ. Π ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android.
ΠΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ β ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΠ°ΡΡΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
Π£Π±ΠΈΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Android
1. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΠ Π½Π° ΠΠ½Π΄ΡΠΎΠΈΠ΄ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
2. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Β«Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅Β», ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Ρ ΡΠΎΠ±Π°ΡΠΊΠΎΠΉ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΏΠΎ ΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ 3 ΡΠ°Π·Π° (Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ). ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ!
3. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π²Π°Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠ½Π°Π±ΠΈΡΠ°ΡΠ΅Π»Ρ ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ΄: *#*#856682583#*#*
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠ»Π°Π½ΡΠ΅Ρ ΠΈ Π·Π²ΠΎΠ½ΠΈΠ»ΠΊΠΈ Π½Π΅ΡΡ, ΠΏΡΠΎΡΡΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² Google Play Π·Π°ΠΏΡΠΎΡ Β«DialerΒ» ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π½ΠΎΠΌΠ΅ΡΠ°.
4. ΠΡΠΊΡΠΎΠ΅ΡΡΡ Β«ΠΠ β ΠΎΡΠ»Π°Π΄ΠΊΠ°Β». ΠΡΠΎΠ»ΠΈΡΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠ· ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Β«ΠΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡΒ». ΠΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ² Π³Π°Π»ΠΎΡΠΊΡ Π½Π°ΠΏΡΠΎΡΠΈΠ².
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ Π±Π°Π½Π½Π΅ΡΡ. ΠΠ½ΠΎΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΡΠΎ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ, ΠΈ ΠΎΠ½ΠΈ ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΈΠΌ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄Ρ
Π²Π°ΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠΉ Π²ΠΈΡΡΡ (ΡΠΌ. ). Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π² ΡΠ°Π·Π½ΡΡ
ΡΠ°ΡΡΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π²ΡΠΏΠ»ΡΠ²Π°ΡΡ Π½Π°Π²ΡΠ·ΡΠΈΠ²ΡΠ΅ ΠΎΠΊΠ½Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ .
ΠΡΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ
Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΡ. ΠΡΠ±ΠΎΠΉ ΠΆΠ΅Π»Π°ΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅, Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² Π»Π΅Π²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΡΠ΅ ΠΏΠΎΠ΄ ΡΠΈΠ»ΡΡΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠΎ ΡΡΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ Π²Π°Ρ ΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΈ Π΄Π»Ρ Π²Π°Ρ Π½Π°ΠΉΠ΄ΡΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ.
ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Ρ ΠΎΠ±ΡΠ°ΡΠ°Π»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Π°ΠΌΠΈΠ³ΠΎ, ΠΌΠ°ΠΈΠ» ΠΈ ΡΠ΄. ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ ΠΈΠ΄Π΅Ρ ΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ. ΠΡΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ.
ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΠΏΠΎΠΏΠ°Π»ΠΎ ΠΊ Π²Π°ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠΎ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°ΠΉΡΠΎΠ², ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΡΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ Π±Π°Π½Π½Π΅ΡΡ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΏΡΠΈ Π·Π°Ρ ΠΎΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΠ°ΠΊΡ.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΡΠΆΠ½ΠΎ ΡΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΄Π°Π»ΠΈΡΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Google Chrome . ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΌΠ΅Π½Ρ, ΠΈ ΠΈΠ΄Π΅ΠΌ Π² ΡΠ°Π·Π΄Π΅Π» Β«ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΒ» .
ΠΠ΄Π΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡΒ» . ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ β ΡΠ΄Π°Π»ΡΠ΅ΠΌ.
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Adblock, Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠ°ΠΌΡΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½ Adblock . ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΊΡΡΡΠΈΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ. ΠΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΌ (ΡΠ½Π΄Π΅ΠΊΡ, Π³ΡΠ³Π» ΠΈ ΡΠ΄.), ΡΠ°ΠΊ ΠΈ ΠΊ ΠΎΡΠΊΡΠΎΠ²Π΅Π½Π½ΠΎ ΡΠΏΠ°ΠΌΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ. Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅.
ΠΠ΄Π΅ΠΌ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
Https://adblockplus.org/ru/
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ. ΠΠ½Π° ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π±ΡΠ°ΡΠ·Π΅Ρ, ΠΈ ΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΉΡΠΈ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ. Π Π΅ΠΊΠ»Π°ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠΎ Π½Π° Β«Π±Π΅Π»ΡΡ Β» ΡΠ°ΠΉΡΠ°Ρ , ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²Π»Π°Π΄Π΅Π»ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ. Π ΡΠ°ΠΌΠ° ΡΠ΅ΠΊΠ»Π°ΠΌΠ° ΡΡΠΎΠΈΡ Π² ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ , ΡΡΠΎΠ±Ρ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ.
Π Π΅ΠΊΠ»Π°ΠΌΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±Π°Π½Π½Π΅ΡΠ½ΡΡ (Π±Π»ΠΎΠΊ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ»Π΅Π²Π°), Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΡΡΠΈ, Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΠΉΡΠ°. Π Π΅ΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΡΠΌΠΈΡΠΈΡΡΡΡ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠΎ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β ΠΎΠ½Π° ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°Π΅Ρ ΠΈ ΠΌΠ΅ΡΠ°Π΅Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ Google Chrome Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ / Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ .
ΠΡΠΎΠ»ΠΈΡΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠ· Π΄ΠΎ ΡΡΡΠ»ΠΊΠΈ Β«ΠΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Β». ΠΠΎΠΏΡΡΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π½Π΅Ρ Π»ΠΈ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ
ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
Π±Π΅Π· ΠΠ°ΡΠ΅Π³ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΡ Π±Π°Π½Π΅ΡΠΎΠ² ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΈΠ·-Π·Π° Π½ΠΈΡ
. Π£Π΄Π°Π»ΠΈΡΠ΅ ΠΈΡ
Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠ»ΠΈΠΊΠ½ΡΠ² ΠΏΠΎ Β«ΠΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΒ» ΠΏΠΎΠΏΠ°Π΄Π΅ΡΠ΅ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π₯ΡΠΎΠΌ . Π ΠΠΎΠΈΡΠΊΠ΅ Π²Π²Π΅Π΄ΠΈΡΠ΅ Adblock ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΠ΄Π°Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π±Π°Π½Π½Π΅ΡΡ ΡΠ»Π΅Π²Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΠ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° Π·Π½Π°ΡΠΎΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²Π΅ΡΡ Π½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ β ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ .
Π£Π±ΠΈΡΠ°Π΅ΠΌ Π³Π°Π»ΠΎΡΠΊΡ Ρ ΠΏΡΠ½ΠΊΡΠ° Β«Π Π°Π·ΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π½Π°Π²ΡΠ·ΡΠΈΠ²ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Β». ΠΠ°Π²ΡΠ·ΡΠΈΠ²ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² .
ΠΠ»Ρ Π―Π½Π΄Π΅ΠΊΡ -Π±ΡΠ°ΡΠ·Π΅ΡΠ°
ΠΠ»Ρ Opera
ΠΠ»Ρ Mozilla Firefox
ΠΠ»Ρ Internet Explorer
ΠΡΠ»ΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠΎ-ΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΈΠ»ΠΈ Π±Π°Π½Π΅ΡΡ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π²Π½ΠΎΠ²Ρ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅ΠΌΡ, ΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΠΈΡΡΡ , ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ²ΠΎΡ ΠΠ‘ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΠΌ ΠΠ.
ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π° Π°Π½Π΄ΡΠΎΠΉΠ΄Π΅
Π ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΠ Π΄Π»Ρ Android Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π°Ρ ΠΈ ΠΏΠ»Π°Π½ΡΠ΅ΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°.
C ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Secret Codes (Π΅Π³ΠΎ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² Google Play) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΊΠΎΠ΄, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠ°Π΄ΠΎΠ΅Π»Π° ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅? Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ²Π°ΡΡ Π²ΠΈΠ΄Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±ΡΠ°ΡΡ ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² Π»Π΅Π½ΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ ΠΈ Π»Π΅Π²ΠΎΠΌ ΠΌΠ΅Π½Ρ Π²ΠΊ. Π ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² Π°ΡΠ΄ΠΈΠΎΠ·Π°ΠΏΠΈΡΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΊ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΡΠ°Π½ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈ ΠΌΡ Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ Π½Π° Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠΈΠΌ.
ΠΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠ?
Π ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Β«ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅Β» Π² Π½ΠΎΠ²ΠΎΡΡΠ½ΠΎΠΉ Π»Π΅Π½ΡΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ ΠΏΠΎΡΡΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡ ΡΠ΅Π±Ρ, Π½ΠΎ ΠΈ ΡΠ²ΠΎΠΈ ΡΠΎΠ²Π°ΡΡ. ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π²ΡΠ΅ΠΌΠ΅Π½Π°ΠΌΠΈ ΡΡΠ° ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π΄ΠΈΠΊΠΎ Π΄ΠΎΠΊΡΡΠ°Π΅Ρ ΠΈ, Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅? Π ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΊΠ°ΠΊ-ΡΠ°Π· ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ. ΠΡΠΈΡΡΡΠΏΠΈΠΌ!
Π Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ Ρ Π²Π°ΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΡΠ²Π°ΡΡ Π²ΠΈΠ΄Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ
Π‘ΠΈΠ΄Ρ Π·Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Π΄Π΅Π»Π°ΠΌΠΈ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Β«ΠΠΒ» Π²Ρ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ°, Π·Π°ΠΌΠ΅ΡΠ°Π»ΠΈ, ΡΡΠΎ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΡΠ²Π°ΡΡ ΠΎΠ½ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΈ Π±Π»Π°Π³ΠΎ Π½Π΅ ΡΠ°ΠΊ Π½Π°Π΄ΠΎΠ΅Π΄Π°ΡΡ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π½ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π³ΡΡΠΏΠΏΡ Π·Π°ΠΏΠ»Π°ΡΠΈΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π·Π° ΡΡΠΎ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅Π³ΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° ΠΏΡΠΎΡΡΠΎΠΈΡ Π΄ΠΎ ΡΠΎΠΉ ΠΏΠΎΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠ΅Ρ Π΅Ρ ΡΡΠΎΠΊ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½ΠΎΠ²ΠΎΡΡΠ½ΠΎΠΉ Π»Π΅Π½ΡΠ΅, Π½ΠΎ ΠΈ Π² ΠΈΠ³ΡΠ°Ρ ! ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Π·Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ Π² Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ³ΡΡΒ» ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π² ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΈ, Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΡΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΡΠ°ΠΉΡΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²Π°ΠΌ Π΄Π°Π΄ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΈΠ΄ΠΊΡ, Π½ΠΎ ΠΈ ΠΌΠ΅ΡΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π²Π°Ρ ΡΡΠΎΠΌΠ»ΡΡΡ, ΡΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ PRO-Π°ΠΊΠΊΠ°ΡΠ½Ρ ΡΡΠΎΠΈΡ ΠΎΠ½ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΡΠΏΠΈΡΡ Π΅Π³ΠΎ Π½Π° Π½Π΅Π΄Π΅Π»Ρ.
Adblock Plus β Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
Adblock Plus β ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² Π²Π°ΡΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
Firefox
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΡΠΎ Π²Π°ΠΌ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΡΡΡΠ΄Π° Π½Π°ΠΉΡΠΈ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΒ» ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠ½ΠΊΡ Β«ΠΠ°ΠΉΡΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉΒ». Π ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠ΅ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° Β«ΠΠΎΠ±Π°Π²ΠΈΡΡΒ».
Google Chrome
ΠΡΠ°ΠΊ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Adblock Plus, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΡΡΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΠ±ΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΒ» ΠΈ Π½Π°ΠΆΠ°ΡΡ Π½Π° Β«Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡΒ». ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠ΅ Π·Π°Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΆΠΌΠ΅ΠΌ Π½Π° Β«Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΒ» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΡΡΠΎΡΠΊΡ Π²ΡΡΠ΅.
ΠΠ°ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΌΡΠ·ΡΠΊΠ΅ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π½Π°Ρ Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΌΡΠ·ΡΠΊΠΈ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅.
ΠΠ°ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅.
Π Π°Π½Π΅Π΅ Π΄ΠΎ 2018 Π³ΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΉΡΠΈ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠΊΠ° Π²ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΠ ΠΈ ΡΠ°ΠΌ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π³Π°Π»ΠΎΡΠΊΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ?
Π£Π²Ρ, Π±ΡΠ²Π°Π΅Ρ ΠΈ ΡΠ°ΠΊΠΎΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΡΠ΅Π»Π΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ Π½Π°Π²ΡΠ·ΡΠΈΠ²ΠΎΠΉ ΡΠ΅ΠΊΠ»Π°ΠΌΡ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π½Π΅ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ, Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡΠ²Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π²ΠΈΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, Π½ΠΎ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π²ΡΠ΅Π΄ΠΈΡΠ΅Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Β«ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅Β» ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ ΠΌΠ΅ΡΠ°Π»Π°. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π°ΡΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ, ΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΡΠΈΡ ΡΠ²Π»Π΅ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π»ΡΠ±ΠΈΡΠ΅Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π° Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π³ΡΡΠΏΠΏΡ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° Π² Π΄Π°Π½Π½ΠΎΠ΅ ΡΡΡΠ»ΠΎ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΉΠ΄Ρ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡ, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΠΊΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π²Π°, Π½ΠΎ ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π°ΡΠ΄ΠΈΠΎΠ·Π°ΠΏΠΈΡΠ΅ΠΉ, Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΡΡ ΡΠ²ΠΎΠΈΡ Π΄ΡΡΠ·Π΅ΠΉ, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΡΠΎΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Google Chrome Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ Π²ΡΠΊΠ»ΡΡΠΈΡΡ.
- ΠΡΠΊΡΠΎΠΉΡΠ΅ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π²Π²Π΅ΡΡ Ρ ΡΠΏΡΠ°Π²Π° Π·Π½Π°ΡΠΎΠΊ Ρ ΡΡΠ΅ΠΌΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ. ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ Π½Π΅ΠΌΡ
- ΠΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ· ΡΠΏΠΈΡΠΊΠ° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΒ».
- Π‘Π½ΠΈΠΌΠΈΡΠ΅ Π³Π°Π»ΠΎΡΠΊΠΈ ΡΠΎ Π²ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ. ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅. Π Π΅ΠΊΠ»Π°ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΡΠ΅Π·Π½ΡΡΡ.
ΠΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π° ΡΠ΅ΠΊΠ»Π°ΠΌΡΠ΅ Π±Π°Π½Π½Π΅ΡΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΠΈΡΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΈΡΡΠΈΡΡ Π΅Π³ΠΎ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ, ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ.
ΠΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π―Π½Π΄Π΅ΠΊΡ Π±ΡΠ°ΡΠ·Π΅Ρ
ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ Π½Π΅ΠΌΡ Π² ΡΠ°ΠΌΠΎΠΌ Π²Π΅ΡΡ Ρ ΠΎΠΊΠ½Π° ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠ½ΠΊΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΠ°Π»Π΅Π΅:
- ΠΡΠΎΡΠΊΡΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠ· ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΒ».
- Π ΠΎΡΠΊΡΡΠ²ΡΠΈΠΌΡΡ ΠΌΠ΅Π½Ρ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ Π·Π°ΡΠΈΡΠ° Π»ΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Π½Π°ΠΏΡΠΎΡΠΈΠ² ΠΏΡΠ½ΠΊΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠΈΡΡΡΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ.
- Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π²Ρ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ/ Π§ΡΠΎΠ±Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ Π±Π°Π½Π½Π΅ΡΡ Π² ΠΠΊ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π½Π°ΡΡΡΠΎΠΈΡΡΒ». Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΉΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ «Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°». ΠΡΡΠ°Π²ΡΡΠ΅ ΡΡΠ΄Π° ΡΡΡΠ»ΠΊΡ Π½Π° ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅.
ΠΠ°ΠΊ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΡΠ»Π΅Π²Π°
ΠΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΡΠ±ΡΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΡΠ»Π΅Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΠΈ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΒ» ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΎΠ±ΡΠ΅Π΅Β». ΠΡΠΎΠΌΠΎΡΠ°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π²Π½ΠΈΠ·. Π ΠΏΠΎΠ»Π΅ ΡΠ·ΡΠΊ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΠ²Π΅ΡΡΠΊΠΈΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠΉ, ΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΠ° Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½Π°.
ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π½Π°Π·ΠΎΠΉΠ»ΠΈΠ²ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΡ Π±Π°Π½Π½Π΅ΡΠΎΠ², Π½ΠΎ ΠΈ ΠΎΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΠ³ΡΠ°Π΅ΡΠ΅ Π² ΠΈΠ³ΡΡ, Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ , ΠΈ Π½Π΅ ΠΆΠ΅Π»Π°Π΅ΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ Π΄ΡΡΠ·ΡΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π»ΠΈ Π²Π°Ρ Π²ΡΡΡΠΏΠΈΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π½ΠΈΡ . Π§ΡΠΎΠ±Ρ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΒ»
- Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠΎΠ»Π΅ Β«ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ΅Β». Π ΠΎΠ±Π»Π°ΡΡΠΈ Β«Π’ΠΈΠΏΡ ΡΠΎΠ±ΡΡΠΈΠΉΒ» Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠ½ΠΊΡ Β«ΠΎΠΏΠΎΠ²Π΅ΡΠ°ΡΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ±ΡΡΠΈΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅Β»
- ΠΠ· ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅. ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ. ΠΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π½ΠΎΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΡ Π²Π°Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡ.
Π£ΡΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Vulkan Debug Utilities
LunarG ΡΠ»ΡΡΡΠΈΠ» ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Vulkan API, ΡΠΎΠ·Π΄Π°Π² Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅: VK_EXT_debug_utils. ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Π§ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.
API Vulkan ΠΈΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡ Π΄Π²Π° Π³ΠΎΠ΄Π°, ΠΈ, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ, ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»Π°Π΄ΠΊΠ° — ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π½ΠΎΡΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ Vulkan.ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ IHV ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ·ΡΠ²ΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ GitHub ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ VK_EXT_debug_report, ΡΠ°ΠΊ ΠΈ VK_EXT_debug_marker. Π Ρ ΠΎΠ΄Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π±ΡΠ»Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠΈΡΠ½ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅: VK_EXT_debug_utils.
ΠΠΎΡΠ΅ΠΌΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ?Π Π°Π±ΠΎΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° Vulkan ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΎΡΠ·ΡΠ²Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡΡΠ±ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΈΠΌ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΠ³Π³Π΅Ρ Π² ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ·Π²Π°Π»ΠΈ ΠΎΡΠΎΠ±ΡΡ ΠΎΠ·Π°Π±ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Vulkan, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, LunarG ΡΠ΅ΡΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ VK_EXT_debug_report ΠΈ VK_EXT_debug_marker Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΡΠ°ΡΡΡ ΡΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. VK_EXT_debug_report — ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, Π° VK_EXT_debug_marker — ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈ Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ pNext Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΡΡΠΊΡΡΡ. Π₯ΠΎΡΡ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎ, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π±ΠΎΠ»ΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ ΠΌΡ Π΄ΡΠΌΠ°Π»ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ pNext. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² Π½ΠΎΠ²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ pNext Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ VK_EXT_debug_report ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², VkDebugReportObjectTypeEXT. ΠΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ VK_EXT_debug_marker. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Vulkan ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², VkObjectType. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Khronos ΡΠ΅ΡΠΈΠ» ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ VkDebugReportObjectTypeEXT ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² VkObjectType.Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ VkDebugReportObjectTypeEXT ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΡΠ°ΡΠ΅Π΅Ρ.
ΠΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²ΡΠ΅ ΡΡΠΈ ΡΠ°ΠΊΡΠΎΡΡ, LunarG ΡΠ΅ΡΠΈΠ»Π° ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Vulkan Ρ Π½ΡΠ»Ρ.
ΠΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎLunarG ΡΠΎΠ·Π΄Π°Π» ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ Vulkan Debug Utilities, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ.
Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² Vulkan SDK LunarGΠΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Vulkan Debug Utilities ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² LunarG SDK, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠ΅ LunarXchange.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ LunarG, Inc. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡLunarG ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ 3D-Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ OpenGL, Vulkan, OpenXR ΠΈ SPIR-V. Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ Π² Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Vulkan. ΠΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π² Π€ΠΎΡΡ-ΠΠΎΠ»Π»ΠΈΠ½Π·Π΅, ΡΡΠ°Ρ ΠΠΎΠ»ΠΎΡΠ°Π΄ΠΎ. LunarG Π±ΡΠ»Π° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ²Π»Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ LunarG ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π°Ρ Π²Π΅Π±-ΡΠ°ΠΉΡ .
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ — Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Vk 2.0.2
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° API
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π²Π½ΡΠΌ 1.
>>> ΠΈΠΌΠΏΠΎΡΡ Π²ΠΊ >>> ΡΠ΅Π°Π½Ρ = vk.Session () >>> api = vk.API (ΡΠ΅ΡΡΠΈΡ) >>> api.users.get (user_ids = 1) [{'first_name': 'ΠΠ°Π²Π΅Π»', 'last_name': 'ΠΡΡΠΎΠ²', 'id': 1}]
ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° vk.API ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° API ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° vk. Session . ΠΠ±ΡΠ΅ΠΊΡ ΡΠ΅Π°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ°, ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° API, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° JSON, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ.
API ΠΎΠ±ΡΠ΅ΠΊΡΠ° api ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ vk.com ΠΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π° API. ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° gotten ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ JSON. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ args ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ POST-Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° https://api.vk.com/method/users.get ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡΠ° Β«user_ids = 1Β».
Π²ΠΊ.API
vk.API ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ΅Π°Π½ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ** kwargs Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° API ΠΈ timeout kwarg. Π‘ΠΌ. Https://vk.com/dev/api_requests Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ v — Π²Π΅ΡΡΠΈΡ API ΠΈ lang — ΡΠ·ΡΠΊ ΠΎΡΠ²Π΅ΡΠΎΠ².
ΠΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ API, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π‘ΠΌ. Https://vk.com/dev/methods Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎ API.
ΡΠ΅ΡΡΠΈΡ = vk.Session () api = vk.API (ΡΠ΅Π°Π½Ρ, v = '5.35', lang = 'ru', ΡΠ°ΠΉΠΌ-Π°ΡΡ = 10) api.method.name (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ = Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅)
Π²ΠΊ. Π‘Π΅ΡΡΠΈΡ
vk.Session ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ access_token . ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ API ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Β«ΠΡΠΈΠ±ΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈΒ». Session ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΅Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ.
ΡΠ΅ΡΡΠΈΡ = vk.Session (access_token = '5ecre7') api = vk.API (ΡΠ΅ΡΡΠΈΡ) ...
vk.AuthSession
ΠΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ vk.Session . ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
session = vk.AuthSession (app_id = 'appid', user_login='[email protected] ', user_password =' ββFinn ') api = vk.API (ΡΠ΅ΡΡΠΈΡ) ...
ΠΡΠ»Π°Π΄ΠΊΠ°
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
vk.logger — ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python logging.Logger .
ΠΡΠ»Π°Π΄ΠΊΠ° Β· Elixir School
ΠΡΠΈΠ±ΠΊΠΈ — Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ ΡΠ°ΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠ»Π°Π΄ΠΊΠ°.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ ΠΎΠ± ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π° Elixir, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ± ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
IEx
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΠΠ»ΠΈΠΊΡΠΈΡΠ΅ — ΡΡΠΎ IEx.
ΠΠΎ ΠΏΡΡΡΡ Π²Π°Ρ Π½Π΅ ΠΎΠ±ΠΌΠ°Π½ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° — Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
IEx ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Elixir
.
ΠΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ IEx Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΡΠΎΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Β«ΠΡΠ½ΠΎΠ²ΡΒ», Π³Π΄Π΅ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΈ ΠΊΠΎΠ΄ Elixir Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅.
ΠΠ΄Π΅Ρ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΡΡΠ°.
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ.
ΠΠ°Π²Π°ΠΉ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ test. exs
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠΎ Π² ΡΠ°ΠΉΠ»:
defmodule TestMod do
def sum ([a, b]) Π΄Π΅Π»Π°ΡΡ
Π± = 0
Π° + Π±
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
IO.puts (TestMod.sum ([34, 65]))
Π Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ — Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ 34
:
$ ΡΠ»ΠΈΠΊΡΠΈΡ test.exs
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "b" Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ)
test.exs: 2
34
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΠ΅ΠΌΡ — ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ , ΡΡΠ΅Π±ΡΠ΅ΡΡΡ IEx; IEx.Π²ΡΡΠ°Π²ΡΡΠ΅
Π² ΡΡΡΠΎΠΊΡ ΠΏΠΎΡΠ»Π΅ b = 0
ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Π΅ΡΠ΅ ΡΠ°Π·.
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
$ ΡΠ»ΠΈΠΊΡΠΈΡ test.exs
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "b" Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ)
test.exs: 2
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ #PID <0.92.0> Π² TestMod.sum / 1 (test.exs: 5). ΠΠ±ΠΎΠ»ΠΎΡΠΊΠ° IEx Π·Π°ΠΏΡΡΠ΅Π½Π°?
34
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, IEx Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ iex -S
.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ mix
Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ iex
, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Ρ IEx.pry
ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, iex -S mix phx.server
Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Phoenix.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ iex -r test.exs
, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»:
$ iex -r test.Π±ΡΠ²ΡΠΈΠ΅
Erlang / OTP 21 [erts-10.3.1] [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] [64-Π±ΠΈΡ] [smp: 4: 4] [ds: 4: 4: 10] [Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ: 1] [hipe] [dtrace]
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "b" Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ)
test.exs: 2
ΠΠ°ΠΏΡΠΎΡ Π½Π° pry #PID <0.107.0> Π² TestMod.sum / 1 (test.exs: 5)
3: b = 0
4:
5: ΡΡΠ΅Π±ΡΠ΅ΡΡΡ IEx; IEx. pry
6:
7: Π° + Π±
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΡ? [Yn]
ΠΡΠ²Π΅ΡΠΈΠ² Π½Π° Π·Π°ΠΏΡΠΎΡ ΡΠ΅ΡΠ΅Π· y
ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Π² Enter, Π²Ρ Π²ΠΎΡΠ»ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ.
$ iex -r test.exs
Erlang / OTP 21 [erts-10.3.1] [ΠΈΡΡΠΎΡΠ½ΠΈΠΊ] [64-Π±ΠΈΡ] [smp: 4: 4] [ds: 4: 4: 10] [Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ: 1] [hipe] [dtrace]
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "b" Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ)
test.exs: 2
ΠΠ°ΠΏΡΠΎΡ Π½Π° pry #PID <0.107.0> Π² TestMod.sum / 1 (test.exs: 5)
3: b = 0
4:
5: ΡΡΠ΅Π±ΡΠ΅ΡΡΡ IEx; IEx.pry
6:
7: Π° + Π±
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΡ? [Yn] y
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ»ΠΈΠΊΡΠΈΡ (1.8.1) - Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctrl + C Π΄Π»Ρ Π²ΡΡ
ΠΎΠ΄Π° (Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²ΠΊΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ h () ENTER)
pry (1)> Π°
34
pry (2)> b
0
pry (3)> a + b
34
pry (4)> ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
34
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ»ΠΈΠΊΡΠΈΡ (1.8.1) - Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctrl + C Π΄Π»Ρ Π²ΡΡ
ΠΎΠ΄Π° (Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ h () ENTER)
iex (1)>
BREAK: (a) bort (c) ontinue (p) roc info (i) nfo (l) oaded
(v) Π²Π΅ΡΡΠΈΡ (k) ΠΈΠ»Π» (D) b-ΡΠ°Π±Π»ΠΈΡΡ (d) ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ ΠΈΠ· IEx, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈΠ±ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ Π½Π°ΠΆΠ°ΡΡ Ctrl + C
Π΄Π»Ρ Π²ΡΡ
ΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π²Π²Π΅ΡΡΠΈ continue
, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²Π°.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΠ»ΠΈΠΊΡΠΈΡΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ·-Π·Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ b
ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½ Π½Π° 0, ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΌΠΌΡ
Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±Π°ΡΡΡΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ·ΡΠΊ ΡΠΆΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ!
IEx.Helpers
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ IEx — ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Ρ .
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π» Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ IEx, Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΡΡΠ³ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠ² Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ IEx.Helpers.
Dialyxir ΠΈ Dialyzer
Dialyzer, DI screpancy A na LYZ er Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ER lang — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠΈΡΠ°ΡΡ , Π½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ Π΅Π³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. ΠΈΡΠ΅Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΌΠ΅ΡΡΠ²ΡΠΉ, Π½Π΅Π½ΡΠΆΠ½ΡΠΉ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΊΠΎΠ΄.
Dialyxir — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Dialyzer Π² Elixir.
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ, ΠΊΠ°ΠΊ Dialyzer, Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄ΠΎΠ±Π½Π° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Ρ
ΠΎΡΠΎΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π°), @spec
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Dialyxir Π² Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± — Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π² ΡΠ°ΠΉΠ» mix.exs
:
defp deps do
[{: dialyxir, "~> 0.4", ΡΠΎΠ»ΡΠΊΠΎ: [: dev]}]
ΠΊΠΎΠ½Π΅Ρ
Π’ΠΎΠ³Π΄Π° Π·Π²ΠΎΠ½ΠΈΠΌ:
$ ΠΌΠΈΠΊΡ Π΄Π΅ΠΏ.ΠΏΠΎΠ»ΡΡΠ°ΡΡ
...
$ mix deps.compile
ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Dialyxir. ΠΠ°Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌ Hex. ΠΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Dialyxir. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Dialyxir Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³ — Π·Π°ΠΏΡΡΡΠΈΡΡ Dialyzer Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΠΈ PLT (Persistent Lookup Table). ΠΠ΅Π»Π°ΡΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Erlang ΠΈΠ»ΠΈ Elixir. Π ΡΡΠ°ΡΡΡΡ, Dialyzer Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ.
$ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ Π΄ΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ --plt
ΠΠ°ΠΏΡΡΠΊ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° PLT ...
ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
dialyzer --build_plt --output_plt /.dialyxir_core_18_1.3.2.plt --apps erts kernel stdlib crypto public_key -r /Elixir/lib/elixir/../eex/ebin /Elixir/lib/elixir/../elixir/ebin /Elixir/lib/elixir/../ex_unit/ebin /Elixir/lib/elixir/../iex/ebin /Elixir/lib/elixir/../logger/ebin /Elixir/lib/elixir/../mix / ebin
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ PLT /.dialyxir_core_18_1.3.2.plt ...
...
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π·Π° 5 ΠΌΠΈΠ½. 14,67 ΡΠ΅ΠΊ.
Π³ΠΎΡΠΎΠ²ΠΎ (Π±ΡΠ»ΠΈ Π²ΡΠ΄Π°Π½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ)
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Dialyxir:
$ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ Π΄ΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ
. ..
examples.ex: 3: ΠΠ΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΈΠΏΠ° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Elixir.Examples: sum_times / 1.
Π£ΡΠΏΠ΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄: (_) -> ΡΠΈΡΠ»ΠΎ ()
...
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Dialyzer ΡΡΠ½ΠΎΠ΅: ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ sum_times / 1
ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π·Π°ΡΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ.
ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Enum.sum / 1
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ
, Π° Π½Π΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
, Π½ΠΎ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° sum_times / 1
ΡΠ°Π²Π΅Π½ ΡΠ΅Π»ΠΎΠΌΡ ΡΠΈΡΠ»Ρ
.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΡΠ»ΠΎ
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ
, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ? ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ round / 1
, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ
Π½Π° ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
:
@spec sum_times (ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ) :: ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
def sum_times (Π°) Π΄Π΅Π»Π°ΡΡ
[1, 2, 3]
|> Enum.map (fn el -> el * ΠΊΠΎΠ½Π΅Ρ)
|> Enum.sum ()
|> ΠΊΡΡΠ³Π»ΡΠΉ
ΠΊΠΎΠ½Π΅Ρ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ:
$ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ Π΄ΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ
...
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ· ...
ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² 0m0. 95-Π΅ Π³ΠΎΠ΄Ρ
ΡΠ΄Π΅Π»Π°Π½ΠΎ (ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΄Π°Π½ΠΎ)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΌΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΠ»Π°Π΄ΠΊΠ°
ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± — ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² Π½Π°Ρ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΠ²ΠΎΠ΄Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ IO.puts / 2
, Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.Π ΡΡΠ°ΡΡΡΡ Π΄Π»Ρ Π½Π°Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ Erlang Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΠΠ»ΠΈΠΊΡΠΈΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ:
defmodule ΠΡΠΈΠΌΠ΅Ρ do
def cpu_burns (a, b, c) Π΄Π΅Π»Π°ΡΡ
Ρ
= Π° * 2
Ρ = Π¬ * 3
Π³ = Ρ * 5
Ρ
+ Ρ + Π³
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ iex
:
Π Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ:
iex>: debugger.start ()
{: ok, #PID <0.307.0>}
ΠΠΎΠ΄ΡΠ»Ρ Erlang : debugger
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ start / 1
Π΄Π»Ρ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
- ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ.
- ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ —
: local
ΠΈΠ»ΠΈ: global
, ΡΠΎ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ:-
: global
— ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ Π½Π° Π²ΡΠ΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ·Π»Π°Ρ . ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. -
: local
— ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ·Π»Π΅.
-
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΡ:
iex>: Π²Π½ΡΡΡ.ni (ΠΡΠΈΠΌΠ΅Ρ)
{: ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΡΠΈΠΌΠ΅Ρ}
ΠΠΎΠ΄ΡΠ»Ρ : int
— ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄.
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π½Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΌΠ΅Π½Ρ ΡΠ»Π΅Π²Π°:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°
Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° — ΡΡΠΎ ΡΠΎΡΠΊΠ° Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ. Π£ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°:
-
: Π²Π½ΡΡΡ. Π Π°Π·ΡΡΠ² / 2
Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ - ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π² IEx:
iex>: int.break (ΠΡΠΈΠΌΠ΅Ρ, 8)
:ΠΠ
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π² ΡΡΡΠΎΠΊΠ΅ 8 ΠΌΠΎΠ΄ΡΠ»Ρ ΠΡΠΈΠΌΠ΅Ρ
.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
iex> Example.cpu_burns (1, 1, 1)
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² IEx, ΠΈ ΠΎΠΊΠ½ΠΎ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΡΠ²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ Π½Π°ΡΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
Π ΡΡΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΊΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.: int.disable_break / 2 ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ
:
iex>: int.disable_break (ΠΡΠΈΠΌΠ΅Ρ, 8)
:ΠΠ
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ : int. enable_break / 2
ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
iex>: int.delete_break (ΠΡΠΈΠΌΠ΅Ρ, 8)
:ΠΠ
Π’Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΎΠΊΠ½Π΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. Π Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΌΠ΅Π½Ρ, Break , ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ Line Break ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°.ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠΎ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²ΡΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΡΡΡ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°:
- Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ — ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΠΌ Π»ΠΈΠ½ΠΈΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
: int.break / 2
- Π£ΡΠ»ΠΎΠ²Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° — Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΠΎΡΠΊΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π½Π° ΡΡΡΠΎΠΊΠ΅, Π½ΠΎ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΎΠ½ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
: int.get_binding / 2
- Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ — ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
: int.break_in / 3
ΠΠΎΡ ΠΈ Π²ΡΠ΅! Π£Π΄Π°ΡΠ½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ!
ΠΠ°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΡΠΎΠΊ? ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° GitHub!
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ ANGLE Ρ GDB (Π² Linux) — hikiko-blog
ANGLE — ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ EGL / GLES2 ΠΏΠΎΠ²Π΅ΡΡ Π΄ΡΡΠ³ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ API. ΠΠ½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ GLES2 / GLES3, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Chromium. Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Igalia WebKit (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΊΠΎΡΠΎ), ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GDB, Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ. Π Π°Π½ΡΡΠ΅ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GDB ΠΈ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² Π²ΡΠ·ΠΎΠ²Ρ ANGLE API, ΡΡΠΎΠ±Ρ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ API Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΠΏΠΎΠΊΠ° Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ANGLE.
1. Π‘ΡΠ΅Π΄Π° (ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ)
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ WebKit, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ»Π°Π΄ΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π²ΠΈΠΆΠΊΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Ρ Π΄Π΅Π»Π°Ρ ΡΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ mesa Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ Ρ ΡΠ°ΠΌ ΡΠΎΠ·Π΄Π°Ρ mesa, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ API, ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Ρ. Π΄. Ρ GDB.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Π° ΡΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°!
ΠΡΠ°ΠΊ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²:
Π½ΠΎΡΡ: [eleni] ~ / igalia $ tree -d -L 1 .βββ ΠΊΠΎΠ΄ βββ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
Π½ΠΎΡΡ: [eleni] ~ / igalia $ tree -d -L 1 . βββ ΠΊΠΎΠ΄ βββ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ |
ΠΈ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Ρ Ρ ΡΠ°Π½Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ — ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π½ΠΎΡΡ: [eleni] ~ / igalia / install $ tree -d -L 2 . βββ ΠΌΡΡΠΎΡΠ½ΠΎΠ΅ Π²Π΅Π΄ΡΠΎ βββ Π²ΠΊΠ»ΡΡΠΈΡΡ β βββ EGL β βββ GL β βββ ΠΠΠΠ‘ β βββ GLES2 β βββ GLES3 β βββ KHR β βββ libdrm β βββ libkms β βββ wpe-1.0 β βββ wpe-fdo-1.0 β βββ wpe-webkit-1.0 βββ lib β βββ pkgconfig β βββ wpe-webkit-1.0 β βββ x86_64-linux-gnu βββ libexec β βββ wpe-webkit-1.0 βββ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ βββ drirc.d βββ glvnd βββ libdrm βββ ΠΌΡΠΆΡΠΈΠ½Π° βββ Π²ΡΠ»ΠΊΠ°Π½
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 18 19 20 21 22 23 24 25 26 27 | Π½ΠΎΡΡ: [eleni] ~ / igalia / install $ tree -d -L 2 . βββ ΠΊΠΎΡΠ·ΠΈΠ½Π° βββ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ β βββ EGL β βββ GL β βββ GLES β βββ GLES2 β βββ ββ βββ KHR β βββ libdrm β βββ libkms β βββ wpe-1.0 β βββ wpe-fdo-1.0 β βββ wpe-webkit-1.0 βββ lib β βββ pkgconfig β βββ wpe-webkit-1.0 β βββ x86_64-linux-gnu βββ libexec β ββ- wpe-web 1.0 βββ Π΄ΠΎΠ»Ρ βββ drirc.d βββ glvnd βββ libdrm βββ man βββ vulkan |
ΠΡΠ°ΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Ρ ΡΠΎΠ·Π΄Π°Π» libdrm ΠΈ mesa Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ, ΠΌΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ install
Π²ΡΡΠ΅ (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ EGL, GL, GLES2 ΠΈ Ρ. Π. Π ΡΠ°Π·Π΄Π΅Π»Π΅ include), Π° Π·Π°ΡΠ΅ΠΌ Ρ Π·Π°Π³ΡΡΠ·ΠΈΠ» ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ANGLE ΠΏΠΎΡΠ»Π΅ ΡΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ: https: //chromium.googlesource.com / angle / angle / + / HEAD / doc / DevSetup.md.
ΠΠ°ΡΠ΅ΠΌ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ (Ρ Π΄Π΅Π»Π°Ρ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠ°):
#! / bin / bash PS1 = ‘\ [\ 033 [0; 32 ΠΌ \] \ [\ 033 [0 ΠΌ \ 033 [0; 32 ΠΌ \] \ u \ [\ 033 [0; 36 ΠΌ \] @ \ [\ 033 [0; 36 ΠΌ \]] \ h \ w \ [\ 033 [0; 32m \] $ (__ git_ps1) \ n \ [\ 033 [0; 32m \] ββ \ [\ 033 [0m \ 033 [0; 32m \] \ $ \ [ \ 033 [0m \ 033 [0; 32m \] βΆ \ [\ 033 [0m \] ‘ PS1 = «[ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ] $ PS1» ΡΠΊΡΠΏΠΎΡΡ ΠΠ£Π’Π¬ = $ ΠΠ£Π’Π¬: $ HOME / igalia / install / bin: ~ / igalia / code / depot_tools ΡΠΊΡΠΏΠΎΡΡ LD_LIBRARY_PATH = $ HOME / igalia / install / lib: $ HOME / igalia / install / lib / x86_64-linux-gnu: $ HOME / igalia / code / angle / out / Debug ΡΠΊΡΠΏΠΎΡΡ XDG_DATA_DIRS = $ XDG_DATA_DIRS: $ HOME / igalia / install / share ΡΠΊΡΠΏΠΎΡΡ LIBGL_DRIVERS_PATH = $ HOME / igalia / install / lib / x86_64-linux-gnu / dri / ΡΠΊΡΠΏΠΎΡΡ MESA_DEBUG = 1 ΡΠΊΡΠΏΠΎΡΡ EGL_LOG_LEVEL = ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΊΡΠΏΠΎΡΡ CFLAGS = «- O0 -ggdb» ΡΠΊΡΠΏΠΎΡΡ CXXFLAGS = «- O0 -ggdb»
#! / Bin / bash PS1 = ‘\ [\ 033 [0; 32 ΠΌ \] \ [\ 033 [0 ΠΌ \ 033 [0; 32 ΠΌ \] \ u \ [\ 033 [0; 36 ΠΌ \] @ \ [\ 033 [0; 36m \] \ h \ w \ [\ 033 [0; 32m \] $ (__ git_ps1) \ n \ [\ 033 [0; 32m \] ββ \ [\ 033 [0m \ 033] [0; 32m \] \ $ \ [\ 033 [0m \ 033 [0; 32m \] βΆ \ [\ 033 [0m \] ‘ PS1 = Β«[ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ] $ PS1Β» ΡΠΊΡΠΏΠΎΡΡ PATH = $ PATH : $ HOME / igalia / install / bin: ~ / igalia / code / depot_tools export LD_LIBRARY_PATH = $ HOME / igalia / install / lib: $ HOME / igalia / install / lib / x86_64-linux-gnu: $ HOME / igalia / code / angle / out / Debug ΡΠΊΡΠΏΠΎΡΡ XDG_DATA_DIRS = $ XDG_DATA_DIRS: $ HOME / igalia / install / share ΡΠΊΡΠΏΠΎΡΡ LIBGL_DRIVERS_PATH = $ HOME / igalia / install / lib / x86_64-linux-gnu / dri2 / dri2 = 1 ΡΠΊΡΠΏΠΎΡΡ EGL_LOG_LEVEL = ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΊΡΠΏΠΎΡΡ CFLAGS = «- O0 -ggdb» ΡΠΊΡΠΏΠΎΡΡ CXXFLAGS = «- O0 -ggdb» |
Π½Π° Intel. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° mesa:
https: // docs.mesa3d.org/envvars.html
2. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ (ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ)
ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ANGLE, Π½ΠΎ Ρ Π½Π΅ ΡΠ»Π΅Π΄ΠΈΠ» Π·Π° Π½ΠΈΠΌΠΈ ΡΠ°ΠΊ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Ρ ΠΎΠ±ΡΡΡΠ½Ρ Π½ΠΈΠΆΠ΅. ΠΠΎΠΈ ΡΠ°Π³ΠΈ:
Π¨Π°Π³ 1: depot_tools Π― Π½Π°ΡΡΡΠΎΠΈΠ» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΏΠΎ, ΡΠ»Π΅Π΄ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ Π·Π΄Π΅ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ.
ΠΠ°ΡΠ΅ΠΌ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΏΡΡΠΈ ( $ PATH
).
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 1 ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ PATH
, ΡΡΠΎΠ±Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΡΡ depot_tools
.
Π― ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» ΠΊΠΎΠ΄:
git clone https://chromium.googlesource.com/angle/angle cd ΡΠ³ΠΎΠ» ΡΠΊΡΠΈΠΏΡΡ python2 / bootstrap.py gclient sync ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
git clone https://chromium.googlesource.com/angle/angle cd angle python2 scripts / bootstrap. py gclient sync git checkout master |
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ:
* bootstrap.py
ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ python2, Π° Π½Π΅ Ρ python3! (ΡΡΡΡΠ½Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ!).
*
gclient ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΈΠ»ΠΈ
gclient update, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ
Π ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΡΠΈΠ» Π΅Π³ΠΎ Π² (Π½Π° Π±Π°Π·Π΅ Debian) Linux, Ρ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΠ» ΡΡΠ΅Π½Π°ΡΠΈΠΉ:
./build/install-build-deps.sh
ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ apt
ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π².
ANGLE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ gn Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½ΠΈΠ½Π΄Π·Ρ.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ:
gn args out / Debug, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π‘Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ANGLE, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ gn ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ GDB ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ANGLE. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π³Π΄Π΅ GDB Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ Π½Π°ΠΉΡΠΈ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ gn args
, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ:
use_debug_fission = false strip_debug_info = Π»ΠΎΠΆΡ enable_iterator_debugging = false is_debug = ΠΈΡΡΠΈΠ½Π° use_dwarf5 = Π»ΠΎΠΆΡ enable_dsyms = ΠΈΡΡΠΈΠ½Π° symbol_level = 2 dcheck_always_on = ΠΏΡΠ°Π²Π΄Π° supports_llvm = Π»ΠΎΠΆΡ
use_debug_fission = false strip_debug_info = false enable_iterator_debugging = false is_debug = true use_dwarf5 = false enable_dsyms = true 0002 |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅:
-
strip_debug_info
— ΡΡΠ΅Π±ΡΠ΅ΡΡΡ , ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ! -
use_dwarf5
ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ dwarf5 Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² GDB, ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΡΡΠ΅ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ (Ρ ΠΎΡΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ false ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) -
symbol_level
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π½Π° 2, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ -
supports_llvm
ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ Π»ΠΎΠΆΠ½ΡΠΌ, Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ gcc Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ANGLE, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» Π΅Π³ΠΎ.
ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ Π·Π°ΠΏΡΡΡΠΈΠ»:
ninja -C out / Debug -jN, (Π³Π΄Π΅ N — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²), ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ANGLE Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ angle / out / Debug
.
3. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ GDB
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ANGLE Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ GDB, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ANGLE ΠΌΠΎΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π» ANGLE Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈΠ»ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ (ΡΠΌ. LD_LIBRARY_PATH
Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 1), ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ GDB, Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ANGLE, Π²ΡΠ·ΠΎΠ²Ρ ΠΊΠΎΡΠΎΡΡΡ
Ρ Π±ΡΠ΄Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΊΡΡΠ²Π°ΡΡ. ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΠΈΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΏΡΡΠ΅ΠΉ Ρ ΡΠΎΠΎΠ±ΡΠΈΠ» GDB, ΡΡΠΎ ΠΌΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ANGLE, ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ … Π― ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π» ΡΠ²ΠΎΠΉ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ~ / .gdbinit
, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΡΡΡ ΡΡΡΠΎΠΊΡ:
add-auto-load-safe-path /home/eleni/igalia/code/
ΠΠ°ΡΠ΅ΠΌ Ρ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π» gdbinit ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΡΡΠΎΠΊΡ:
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ / home / eleni / igalia / code / angle / out / Debug
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ GDB Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ANGLE Π² Π΅Π³ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ ΠΌΠΎΠ³ Π±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π² ΡΡΡΠΎΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ANGLE ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ, ΠΊΠ°ΠΊ ΠΈ Ρ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ.
4. CCLS
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ CCLS (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Ρ Vim), Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ compile_commands.json
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· gn Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ββ $ βΆ gn args out / Debug / —export-compile-commands
Π‘ΡΡΠ»ΠΊΠΈ
[1]: ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ANGLE
[2]: ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΡΠΈ GDB
[3]: Π‘ΡΡΠ»ΠΊΠ° GN
Π£Π²ΠΈΠ΄ΠΈΠΌΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·!
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GNU Debugger
GNU Debugger, Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, gdb
, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΈ, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π² Π³Π»ΡΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠΎΠ΄ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π΅Π½
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ GDB, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠΎΠ΄.ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° C ++ (Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΠΈΡΠ΅ΡΠ΅ Π½Π° C ++, ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ²), ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠ΅ΡΠΈΠΈ ΠΈΠ³Ρ Π² ΡΠ³Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ, Π½Π° Opensource.com:
#include
#include// srand
#include// printf Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ std;
int main () {
srand (Π²ΡΠ΅ΠΌΡ (NULL));
ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π°Π»ΡΡΠ° = ΡΠ°Π½Π΄ΠΎΠΌ ()% 8;
cout << "ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ." << endl;
int beta = 2;printf ("Π°Π»ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ½Π°% s \ n", Π°Π»ΡΡΠ°);
printf ("kiwi is set to is% s \ n", beta);Π²ΠΎΠ·Π²ΡΠ°Ρ 0;
} // ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π½ΠΎ ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Ρ GCC 5). ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ C ++, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΡΠΎ, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π½ΠΎΠ²ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ GDB ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
$ g ++ -o buggy example.cpp
$ ./buggy
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.
ΠΡΠΈΠ±ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠ· ΡΡΠΈΡ
Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ alpha
Π±ΡΠ»Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ Π±Ρ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΡΠ»Π° Π½Π° ΠΏΠΎΡΠ»Π΅ .ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊ, Π½ΠΎ ΡΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠ΅ΠΎΡΠΈΡ, ΠΈ, ΠΏΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΡΠΎΡ ΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΡΠΈΡΠ»ΠΈ Π±Ρ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ printf
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΆΡΡΠ½Π°Π»Π° ΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΡΡΡΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅ , Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Π°. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΡΡΠ½ΠΎ, Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ·ΠΆΠ΅.
GNU Debugger — ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ gdb
Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΈΠ»ΡΡΡΠΈΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ . ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ GDB ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
$ gdb ./buggy
Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ./buggy...done.
(Π³Π΄Π±) Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1 Π½Π° 0x400a44
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: / home / seth / demo / buggyΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1, 0x0000000000400a44 Π² main ()
(gdb)
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ GDB Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, GDB Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΆΠ΄Π΅Ρ Π²Π°ΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ GDB Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, ΡΡΠΎ GDB ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π° GDB Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π°: start
. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² GDB Π²ΡΡΡΠΎΠ΅Π½Π° ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° , ΡΠ°ΠΊ ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ½Π° ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ GDB ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ continue
:
(gdb) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΡΠΈΠ³Π½Π°Π» SIGSEGV, ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
0x00007ffff71c0c0b Π² vfprintf () ΠΈΠ· /lib64/libc.so.6
(gdb)
ΠΠ΄Π΅ΡΡ Π½Π΅Ρ ΡΡΡΠΏΡΠΈΠ·ΠΎΠ²: ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ΅Π»ΠΎ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ²ΠΎΠ΄Π° Β«Hello worldΒ», Π½ΠΎ GDB ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ», ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΡΠ±ΠΎΠΉ. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΠΉ, Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ GDB ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠΎΡΡΠ½ΠΈΠ»Π°ΡΡ, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΊΠΎΠΏΠ½ΡΡΡ Π΅ΡΠ΅ Π³Π»ΡΠ±ΠΆΠ΅. ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ΄Π°ΡΡ ΠΎΡ GDB, Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² Π²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ -g
Π² GCC:
$ g ++ -o debuggy example. cpp
$ ./debuggy
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.
ΠΡΠΈΠ±ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
$ ls -l * buggy * * cpp
-rw-r - r-- 310 19 ΡΠ΅Π²ΡΠ°Π»Ρ 08:30 ΠΎΡΠ»Π°Π΄ΠΊΠ°.cpp
-rwxr-xr-x 11624 19 ΡΠ΅Π²ΡΠ°Π»Ρ 10:27 Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ *
-rwxr-xr-x 22952 19 ΡΠ΅Π²ΡΠ°Π»Ρ 10:53 ΠΎΡΠ»Π°Π΄ΠΊΠ° *
ΠΡΠ»Π°Π΄ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ GDB
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ GDB Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ Π½ΠΎΠ²ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ ( debuggy
, Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅):
$ gdb ./debuggy
Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ./debuggy...done.
(Π³Π΄Π±) Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1 Π½Π° 0x400a44
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: / home / seth / demo / debuggyΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1, 0x0000000000400a44 Π² main ()
(gdb)
ΠΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Π΄Π»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ start
:
(gdb) Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1 ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x400a48: ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ°ΠΉΠ»Π°. cpp, ΡΡΡΠΎΠΊΠ° 9.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: / home / sek / demo / debuggyΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 1, main () Π² debug.cpp: 9
9 srand (time (NULL));
(Π³Π΄Π±)
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° main
ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ GDB ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ continue
, Π½ΠΎ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ next
:
(gdb) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ
10 int alpha = rand ()% 8;
(gdb) next
11 cout << "ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ."<< endl;
(gdb) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ.
12 int Π±Π΅ΡΠ° = 2;
(gdb) next
14 printf (Β«Π°Π»ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ½Π°% s \ nΒ», Π°Π»ΡΡΠ°);
(gdb) nextΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΡΠΈΠ³Π½Π°Π» SIGSEGV, ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
0x00007ffff71c0c0b Π² vfprintf () ΠΈΠ· /lib64/libc.so.6
(gdb)
ΠΠ· ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» Π½Π΅ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ beta
, Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΈ printf
. ΠΡΠΈΠ±ΠΊΠ° ΠΎΠΏΠΈΡΡΠ²Π°Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ (ΡΠΏΠΎΠΉΠ»Π΅Ρ: Π΄Π»Ρ printf
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
), Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π° ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΡΡΠ½ΡΠΌ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π² GDB, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ GDB ΠΎ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²Π΅Π» Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ
, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ½ΠΎΠ²Π° Π²Π²Π΅Π΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ start
, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ ΡΡΡΠΎΠΊΠ΅ 11. ΠΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π±ΡΡΡΡΠΎ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ 11 — ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ:
(gdb) Π½Π°ΡΠ°Π»ΠΎ
ΠΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΆΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π°.
ΠΠ°ΡΠ°ΡΡ ΡΠ½Π°ΡΠ°Π»Π°? (Π΄Π° ΠΈΠ»ΠΈ Π½Π΅Ρ) Π΄Π°
ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 2 Π½Π° 0x400a48: ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ°ΠΉΠ»Π°.cpp, ΡΡΡΠΎΠΊΠ° 9.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: / home / sek / demo / debuggyΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 2, main () Π² debug.cpp: 9
9 srand (time (NULL));
(gdb) break 11
Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 3 Π½Π° 0x400a74: ΡΠ°ΠΉΠ» debug. cpp, ΡΡΡΠΎΠΊΠ° 11.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
:
(gdb) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 3, main () Π² debug.cpp: 11
11 cout << "Hello world." << endl;
(Π³Π΄Π±)
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π² ΡΡΡΠΎΠΊΠ΅ 11 ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ alpha
ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ beta
.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GDB
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ print
. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π»ΡΡΠ°
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΡΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΌΠΎΠΈΡ
:
(gdb) ΠΏΠ΅ΡΠ°ΡΡ Π°Π»ΡΡΠ°
$ 1 = 3
(gdb)
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΠΎΡΠΊΠΈ, Π³Π΄Π΅ beta
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
(gdb) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.
12 int Π±Π΅ΡΠ° = 2;
(gdb) next
14 printf (Β«Π°Π»ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ½Π°% s \ nΒ», Π°Π»ΡΡΠ°);
(gdb) print beta
$ 3 = 2
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ. Π’ΠΎΡΠΊΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π°, — ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° GDB. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ beta
Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ½Π° 2
, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ Π²Π°Ρ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ beta
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ:
(gdb) ΡΠΌΠΎΡΡΠ΅ΡΡ Π±Π΅ΡΠ°> 0
Π’ΠΎΡΠΊΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 5: Π±Π΅ΡΠ°> 0
(gdb) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.Π’ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° 3, main () Π² debug.cpp: 11
11 cout << "Hello world." << endl;
(gdb) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ.
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ.ΠΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ 5: beta> 0
Π‘ΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = false
ΠΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = true
main () Π² debug.cpp: 14
14 printf (Β«Π°Π»ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠ½Π°% s \ nΒ», Π°Π»ΡΡΠ°);
(Π³Π΄Π±)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²ΡΡΡΠ½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ
, ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΡΠΎΡΠ΅ΠΊ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΈ ΡΠΎΡΠ΅ΠΊ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ°.
ΠΠ½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GDB
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π½ΡΡ
ΡΠΎΡΠΌΠ°ΡΠ°Ρ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ beta
ΠΊΠ°ΠΊ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
(gdb) print / o beta
4 Π΄ΠΎΠ»Π»Π°ΡΠ° = 02
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ:
(gdb) print / o beta
$ 5 = 0x2
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
(gdb) whatis beta
type = int
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GDB
ΠΡΠΎΡ Π²ΠΈΠ΄ ΡΠ°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ·Π° Π»ΡΡΡΠ΅ ΠΏΡΠΎΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π²Π°Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π½ΠΎ ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° whatis
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π°Π΅Ρ Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ alpha
ΠΈ beta
ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ Π²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ printf
, Π·Π°ΡΡΠ°Π²Π»ΡΡ Π²Π°Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ % s
Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ
printf
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ % d
. ΠΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π±Π΅Π· Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ ΠΏΠΎΡΠΎΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΌΡΠ΅ Ρ ΠΈΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.ΠΡΠ»ΠΈ Π±Ρ ΠΈΡ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π±Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GDB — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡ Π²ΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π½Π°ΡΡ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΡ
ΠΡΠΎ ΡΠ°ΠΊΡ ΠΆΠΈΠ·Π½ΠΈ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΌΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ΅ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅Π΄Π½Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠ°ΡΡ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ), ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΠ·Π²Π°Π½Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ½ΠΎΠ³Π΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΡΠ΄Π΅Π»Π°Π½Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠ°ΠΊΠΎΠΉ Π±Ρ Π½ΠΈ Π±ΡΠ»Π° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅Π·Π΄Π΅, ΠΈ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° — Π½Π°ΠΉΡΠΈ ΠΈ Π½Π΅ΠΉΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ .
GNU Debugger — ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π½ΠΈΠΌ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π» Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎ Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ΅Π½ΠΈΡ GNU Info:
$ ΠΈΠ½ΡΠΎ gdb
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΠ·ΡΡΠ°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ GDB ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ Π² ΡΡΠΎΠΌ Π΄Π΅Π»Π΅, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Π°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ ΠΊΠ°ΠΊΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΡΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ Android Studio
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠ°?
ΠΡΠ»Π°Π΄ΠΊΠ° — ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΡΡΠ°ΠΏ ΡΠΈΠΊΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΎΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΊ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΡ Π²Π°ΡΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π² Android Studio.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
ΠΡΠΎΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ Android Studio. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ — Android Studio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΡΠ΅Ρ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°Π±Π΅Π»Ρ USB. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π³Π° Β«debuggableΒ» Π² ΡΠ°ΠΉΠ»Π΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ
ΠΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅? ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«ΠΡΠ»Π°Π΄ΠΊΠ°Β», ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, Android Studio ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π½Π° ΡΡΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ / ΠΏΠ»Π°Π½ΡΠ΅ΡΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: developer.android.com
Π’Π΅, ΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Android, ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Android (AVD) Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Π ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ AVD Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ — ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Β«AVD ManagerΒ» Π² ΠΌΠ΅Π½Ρ Β«ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΒ» ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π‘ΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΒ». SDK ΠΎΡΠΊΡΠΎΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΡΠΎΠΉΡΡΠ² Android, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ . ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
Android Studio ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π»ΡΠ±ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈ ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΡΠ»Π°Π΄ΠΊΠ°Β».
Android Studio Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ°ΡΠ΅ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ? Π§ΡΠΎ ΠΆ, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ ΡΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Android Studio ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΏΠΎΠΊΠ° Π²Ρ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ΠΊ ΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² Π½Π΅ΠΌ Π½ΡΠΆΠ΄Π°ΡΡΡΡ, — Π½Π΅ΠΏΠ»ΠΎΡ Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ.
Π ΠΎΠ»Ρ Π»ΠΎΠ³ΠΎΠ² Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΡΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π΅Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ Log. ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ android.util.Log, ΡΡΠΎΠ±Ρ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΈΡΡ Π² Logcat Android Studio.ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π² ΡΡΠΈΠ»ΠΈΡΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ TAG ΠΈ Β«Π²Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅Β», Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Throwable, ΡΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΠΆΡΡΠ½Π°Π» ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ, ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΡΠ΅ΡΠΎΠ² Π² Logcat. ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΈΠ·Π²Π°Π½Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ΅ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΠΌ ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΡΠ° Logcat Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, ΠΈΡ ΠΏΡΡΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Verbose, Debug, Info, Warning ΠΈ Error.
ΠΠΎΠ²ΠΎΡΡ ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²ΠΎ ΡΡΠΎ Π±Ρ ΡΠΎ Π½ΠΈ ΡΡΠ°Π»ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Verbose, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ±ΠΎΡΠΊΡ ΡΠ΅Π»ΠΈΠ·Π°! ΠΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ SDK ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΆΡΡΠ½Π°Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ Android Studio.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΆΡΡΠ½Π°Π»Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ Π² Logcat Π½Π°Π²ΡΠ΅Π³Π΄Π°, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π΅ ΡΠ΄Π°Π»ΠΈΡ ΠΈΡ Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΠΆΠ½ΠΎ Π²ΠΎΠ²ΡΠ΅ΠΌΡ ΡΠ΄Π°Π»ΡΡΡ ΠΈΡ , ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΠΆΡΡΠ½Π°Π» Π·Π°Π½ΠΎΡΠΈΠ»Π°ΡΡ ΡΠ΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ if ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ BuildConfig Π² ΡΠ°ΠΉΠ»Π΅ Gradle.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Logcat
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Logcat ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ if. ΠΠ½ΠΈ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΏΡΡΠΊΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π² build.gradle. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π»Ρ Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True, Π° ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠ±ΠΎΡΠΊΠ° Π²ΡΠΏΡΡΠΊΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ Π½Π° false. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Logcat Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΎΡΡΠ΅ΡΠΎΠ².ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² if, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Logcat.
Logcat ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠ΅Π»Π΅Π½Ρ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Android Studio Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Logcat ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ.
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°: ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
Π’ΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° — Π²Π°ΠΆΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Android.Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: Π²Ρ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Android Studio, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ-ΡΠΎ ΠΈΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡΡΠ΅Ρ. ΠΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ ΡΠΎΠΌΡ ΠΌΠ΅ΡΡΡ, Π³Π΄Π΅ Π±ΡΠ»Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π΅Π΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π Π·Π΄Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°. ΠΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΡ Π²Π΅ΡΡ — ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΡΡΠΈΡΠ°Π΅ΡΠ΅ Π½ΡΠΆΠ½ΡΠΌ, ΠΈΠ»ΠΈ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° — ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎΡΠ΅ΠΌΡ Android Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΡΡ ββΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°? Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π·Π°ΡΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π»Π΅Π²ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΡΡΡΠΎΡ Π² ΡΡΡΠΎΠΊΡ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Control + F8 Π½Π° ΠΠ ΠΈ Command + F8 Π½Π° Mac). ΠΡΠ°ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π½Π° Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°. ΠΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, — ΡΡΠΎ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
Android Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΠΎΠΊΠ½Π΅ Β«ΠΡΠΎΡΠΌΠΎΡΡ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π°Β», Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ, ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΠΈΠ· Π½ΠΈΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠ΅ΠΊ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΈ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π»ΡΠ±Π°Ρ ΡΡΠ°Π±ΠΎΡΠ°Π²ΡΠ°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°.
Π₯ΠΎΡΡ Android Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΠΎΠΉΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, Ρ Π½ΠΈΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΡΠ»Π°Π΄ΠΊΠ° Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠ°, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΎΠΊΠ½Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΡΡΠ½ΡΡ, ΠΏΡΠΎΡΠΈΡΠ°Π² Π²Π΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Android Studio Π΄Π»Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΎΡΠΊΠ°ΠΌ ΠΎΡΡΠ°Π½ΠΎΠ²Π°.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΡΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° toString ().ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π±ΡΠ΄ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΡΠ΄ΠΎΠΌ Ρ Π΅Π³ΠΎ ΠΊΠΎΡΠ½Π΅ΠΌ. ΠΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Android Studio Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
Android Studio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π°ΠΆΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π°Ρ ΠΎΡΠ΅Π½ΠΊΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ; Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Android Studio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ Evaluate Expressions Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² Android Studio
Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΈ Π² Android Studio ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ !
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Android DDMS, Π³Π΄Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π°Β», ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π°.ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ! ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ ΡΠΊΡΠ°Π½Π°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Ρ Π²Π°ΡΠ° Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΠ½ΡΡΠΈΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ², Ρ ΡΠΎΠΉ Π»ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ (ΠΠ°ΠΏΠΈΡΡ ΡΠΊΡΠ°Π½Π°).
vkbottle Β· PyPI
ΠΠΎΠ²ΠΎΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π±ΠΎΡ-Π΄Π²ΠΈΠΆΠΊΠ° ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ Π² Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅!
ΠΠ ΠΠ§ΠΠ’ΠΠ’Π¬ ΠΠΠ Π‘ΠΠ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°:
pip install vkbottle
or
pip3 install vkbottle
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Python:
- Python 3.5
- Python 3.6
- Python 3.7 ΠΈ>
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ Π±ΠΎΡ-Π΄Π²ΠΈΠΆΠΎΠΊ
ΠΈΠ· vkbottle import Bot, MessageAnswer bot = ΠΠΎΡ (ΡΠΎΠΊΠ΅Π½, group_id, debug = True)
ΠΠΌΡ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
ΡΠΎΠΊΠ΅Π½ | ΠΠ°Ρ ΡΠΎΠΊΠ΅Π½ VK Group Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π»ΠΎΠ½Π³ΠΏΠΎΠ»Π»Π° ( str ) |
group_id | ID Π²Π°ΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅ ( int ) |
ΠΎΡΠ»Π°Π΄ΠΊΠ° | ΠΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ vkbottle ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ? ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ False ( bool ) |
Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ | Π‘Π»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ vkbottle (Π±ΠΎΡ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ asyncio Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ True ( bool ) |
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: import events
with bot.run ()
in it or make it in one single file
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
@on_message (ΡΠ΅ΠΊΡΡ)
@ bot.on_message (Β«ΠΏΡΠΈΠ²Π΅Ρ!Β») def ΠΏΡΠΈΠ²Π΅Ρ (ΠΎΡΠ²Π΅Ρ): print ('ΠΡΠΎ-ΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» ΠΌΠ½Π΅ "ΠΏΡΠΈΠ²Π΅Ρ!"!') # bot.run ()
@on_message_undefined ()
@ bot.message_undefined () def undefined (ΠΎΡΠ²Π΅Ρ): print ('Π― ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ') # Π±ΠΎΡ.Π·Π°ΠΏΡΡΡΠΈΡΡ()
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅Ρ ? ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΠ΅ΡΠΎΠ΄ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ΠΎΡΠ²Π΅Ρ (ΡΠ΅ΠΊΡΡ, Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = ΠΠ΅Ρ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° = ΠΠ΅Ρ, Π½Π°ΠΊΠ»Π΅ΠΉΠΊΠ° = ΠΠ΅Ρ) | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ |
ΠΡΠΈΠΌΠ΅ΡΡ:
@ bot.on_message ('ΠΊΠΎΡ') def itz_cat (ΠΎΡΠ²Π΅Ρ: AnswerObject): ΠΎΡΠ²Π΅Ρ ('ΠΡΠ°Ρ') # ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "ΠΊΠΎΡ" Π±ΠΎΡΡ, ΠΎΠ½ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ "ΠΡΠ°Ρ"
ΠΡΠ²Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.send ΠΌΠ΅ΡΠΎΠ΄ Π±Π΅Π· peer_id, ΠΎΠ½ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
ΠΠ»ΡΡΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΊ Π²Π°ΡΠΈΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
@ bot.on_message ('ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ <ΠΈΠΌΡ>') def my_name (ΠΎΡΠ²Π΅Ρ: AnswerObject, ΠΈΠΌΡ): ΠΎΡΠ²Π΅Ρ ('Π’Π΅Π±Ρ Π·ΠΎΠ²ΡΡ' + ΠΈΠΌΡ + '!')
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ
ΡΠ°ΡΠ°.
ΠΠ»ΡΡΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ΅
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ VKBottle Keyboard Generator:
[# ΠΠΎΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° [{'text': 'button1'}, {'text': 'button2'}], # ΡΡΡΠΎΠΊΠ° [{'text': 'button3'}] # Π²ΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ]
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°:
{button1} {button2}
{——- button3 ——}
ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ:
ΠΠΏΡΠΈΡ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
---|---|---|
ΡΠ΅ΠΊΡΡ | Π’Π΅ΠΊΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ | |
ΡΠ²Π΅Ρ | Π¦Π²Π΅Ρ ΠΏΡΠ³ΠΎΠ²ΠΈΡΡ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π²ΡΠΎΡΠΈΡΠ½ΡΠΉ) |
ΡΠΈΠΏ | Π’ΠΈΠΏ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ | ΡΠ΅ΠΊΡΡ |
Π‘ ΠΎΡΠ²Π΅ΡΠΎΠΌ
ΠΎΡΠ²Π΅Ρ ( 'ΠΡΠΎ ΠΌΠΎΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°!', ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° = [ [{'text': 'ΠΠΎΠΉ Π±Π°Π»Π°Π½Ρ'}, {'text': 'Π―'}], [{'ΡΠ΅ΠΊΡΡ': 'ΠΌΠ°Π³Π°Π·ΠΈΠ½', 'ΡΠ²Π΅Ρ': 'ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ'}] ] )
ΠΠ°ΡΡΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ²
ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² ΠΈ Π²ΡΠ΅Π³ΠΎ 3 ΠΏΠ°ΡΡΠ΅ΡΠ°:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π°Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΠΏΡΠΎΡ |
Π³ΡΡΠΏΠΏΠ° | ΠΠ°ΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°ΠΏΡΠΎΡΠ° group.getById |
ΡΠ°ΠΌ | ΠΠ°ΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° Π±ΠΎΡΠ° |
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ² ? ΠΠ±ΡΡΡΠ½ΠΈΡΡ Π»Π΅Π³ΠΊΠΎ:
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΡ
ΠΡ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΎΡΠ²Π΅Ρ, ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Answer-Parser. ΠΡΠΈΠΌΠ΅Ρ ΠΏΠ°ΡΡΠ΅ΡΠ°
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
{parser: arg}
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, ΠΌΠΎΠΉ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ {user: first_name}!
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
ΠΡΠΈΠΌΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
{user: first_name} | ΠΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎΠ²Π΅ΡΡΠΈΠ²ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ |
{user: last_name} | ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎΠ²Π΅ΡΡΠΈΠ²ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ |
{user: id} | ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎΠ²Π΅ΡΡΠΈΠ²ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ |
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
ΠΡΠΈΠΌΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
{Π³ΡΡΠΏΠΏΠ°: ΠΈΠΌΡ} | ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΎΡ |
{Π³ΡΡΠΏΠΏΠ°: ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅} | ΠΠΎΠΏΠ°ΡΡΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΎΡ |
… | … |
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΠΠ ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ / Π³ΡΡΠΏΠΏΠ΅
Π‘Π°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
ΠΡΠΎΡ ΠΏΠ°ΡΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ
ΠΡΠΈΠΌΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
{self: peer_id} | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΡΠΎΠ±ΡΡΠΈΡ |
{self: group_id} | ΠΡΡΠΏΠΏΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ID Π±ΠΎΡΠ° |
Bot Api
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ VK Bot API Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΈ Π³ΡΡΠΏΠΏ Π·Π°ΠΏΡΠΎΡΠΎΠ².ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄:
api = bot.api api.messages.send (peer_id = 1, message = 'ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΎΠΉ Π΄ΡΡΠ³!')
ΠΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ API
ΠΠ»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄:
ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ vkbottle import user = User ('ΠΌΠΎΠΉ-ΡΠΎΠΊΠ΅Π½', user_id = 1)
ΠΡΠ³ΡΠΌΠ΅Π½Ρ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ΡΠΎΠΊΠ΅Π½ | Vk Api token ( str ) |
user_id | ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ( int ) |
ΠΎΡΠ»Π°Π΄ΠΊΠ° | ΠΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ VKBottle Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. |