Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 138

Автор ΠΡ€Π½ΠΎΠ»ΡŒΠ΄ Роббинс

Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ программисты люди, ошибки программирования Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹. ΠžΡ‚Π»Π°Π΄ΠΊΠ° являСтся процСссом обнаруТСния ΠΈ устранСния ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π”Π°ΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ спроСктированныС ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚; ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ, Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΌΡ‹ΡΠ»ΡŒΡŽ являСтся Π½Π°Ρ†Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΠΊΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ ΠΏΠΎΠ½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° появлСниСм ошибки.

Данная Π³Π»Π°Π²Π° ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ряд Ρ‚Π΅ΠΌ, начиная с ΠΎΠ±Ρ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ ΠΈ совСтов ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ (ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ элСмСнтарноС использованиС GDB, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° GNU), пСрСходя ΠΊ ряду ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ для использования ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΈ Π·Π°Ρ‚Π΅ΠΌ рассмотрСниСм ряда инструмСнтов, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… Π² процСссС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π“Π»Π°Π²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΠΈ свСдСниями ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Β«ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΡ‚Π»Π°Π΄ΠΊΠΈΒ», ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ вСсьма Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π½Π°ΡˆΠΈΡ… совСтов основана Π½Π° нашСм долгосрочном ΠΎΠΏΡ‹Ρ‚Π΅ участия Π² качСствС Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΡ†Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ GNU ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ gawk (GNU awk). Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ссли Π½Π΅ всС, спСцифичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ прСдставляСм, происходят ΠΎΡ‚ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. На протяТСнии Π³Π»Π°Π²Ρ‹ особыС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ словом РСкомСндация.

15.1. Π‘Π½Π°Ρ‡Π°Π»Π° Π³Π»Π°Π²Π½ΠΎΠ΅

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Π΄Π΅Ρ‚ сСбя Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π² Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ сначала. Часто странноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования памяти β€” использования Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, чтСния ΠΈΠ»ΠΈ записи Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ динамичСской памяти ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстрСС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π² срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ памяти Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ.

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

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ являСтся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ срСдством, ΠΌΡ‹ рассмотрим Π΅Π³ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅. Π”Π°Π»Π΅Π΅ Π² Π³Π»Π°Π²Π΅ ΠΌΡ‹ обсудим ряд инструмСнтов для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ памяти.

15.2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

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

На ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах Unix опция компилятора -g являСтся Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΉ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -O, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ пСрСстановку Π±ΠΈΡ‚ΠΎΠ² ΠΈ участков ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прямого соотвСтствия с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ исполняСтся, ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ исходного ΠΊΠΎΠ΄Π°. ΠžΡ‚ΠΌΠ΅Π½ΠΈΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ установлСниС связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΈ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, пошаговоС ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. (ПошаговоС исполнСниС вскорС Π±ΡƒΠ΄Π΅Ρ‚ описано.)

GCC, GNU Compiler Collection (коллСкция компиляторов GNU), Π½Π° самом Π΄Π΅Π»Π΅ допускаСт совмСстноС использованиС -g ΠΈ -O. Однако, это привносит ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅: слСдованиС исполнСнию Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ становится Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ совмСстного использования ΠΎΠΏΡ†ΠΈΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ исполняСмом ΠΌΠΎΠ΄ΡƒΠ»Π΅. Они Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ лишь дисковоС пространство, Π° Π½Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ПослС этого установлСнный исполняСмый Ρ„Π°ΠΉΠ» всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… случаях.

По Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с самого Π½Π°Ρ‡Π°Π»Π°, использовав лишь ΠΎΠΏΡ†ΠΈΡŽ -g. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ трассировку; имССтся достаточно Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ простом ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ написанной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ бСспокоясь ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ компилятор пСрСставляСт ΠΊΠΎΠ΄.

Π•ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ прСдостСрСТСниС: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ всС Π΅Ρ‰Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅. Π’ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅; Ссли Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ Π΅Π΅ Π²Ρ‹ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях компиляция Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ -O ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ[161]. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° остаСтся ΠΏΡ€ΠΈ компиляции Π±Π΅Π· использования ΠΎΠΏΡ†ΠΈΠΈ -O, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ имССтся какая-Ρ‚ΠΎ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ логичСской ошибки, Тдущая своСго обнаруТСния.

15.3. ΠžΡΠ½ΠΎΠ²Ρ‹ GDB

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

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Π² V7 Unix Π±Ρ‹Π» adb, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являлся ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ машинного уровня Π’ System III Π±Ρ‹Π» sdb, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являлся ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ исходного ΠΊΠΎΠ΄Π°, a BDS Unix прСдоставляла dbx, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ исходного ΠΊΠΎΠ΄Π°. (ОбС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ adb.) dbx ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… коммСрчСских систСмах Unix.

GDB, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU, являСтся ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ исходного ΠΊΠΎΠ΄Π°. Π£ Π½Π΅Π³ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС возмоТностСй, ΠΎΠ½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ пСрСносим ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅Π½, Ρ‡Π΅ΠΌ любой ΠΈΠ· sdb ΠΈΠ»ΠΈ dbx[162].

Как ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΈ, GDB являСтся ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Он Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строкС исходного ΠΊΠΎΠ΄Π° Π·Π° Ρ€Π°Π·, Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ строку Π²Π²ΠΎΠ΄Π°, содСрТащСго ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для исполнСния.

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ графичСскиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ; ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ больший ΠΎΠ±Π·ΠΎΡ€ исходного ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΊΠ°ΠΊ ΠΈΠ· ΠΎΠΊΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ GUI, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ мСню. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ddd[163] являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ…; ΠΎΠ½ построСн ΠΏΠΎΠ²Π΅Ρ€Ρ… GDB, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ GDB, Π²Ρ‹ сразу ΠΆΠ΅ смоТСтС Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ddd. (Π£ ddd Π΅ΡΡ‚ΡŒ собствСнноС руководство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ, Ссли Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ интСнсивно Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.) Π”Ρ€ΡƒΠ³ΠΈΠΌ графичСским ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ являСтся Insight[164], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для прСдоставлСния ΠΏΠΎΠ²Π΅Ρ€Ρ… GDB графичСского интСрфСйса Tcl/Tk. (Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Ссли ΠΎΠ½ доступСн ΠΈ нравится Π²Π°ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ собираСмся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ использованиС простого интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.)

GDB ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π‘ ΠΈ Π‘++, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ восстановлСния ΠΈΠΌΠ΅Π½ (name demangling), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² классов ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° исходного ΠΊΠΎΠ΄Π° Π‘++. Π’ частности, GDB распознаСт синтаксис Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π‘, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ значСния слоТных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ '*ptr->x.a[1]->q'. Он ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Fortran 77, хотя Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π° символ подчСркивания GDB Ρ‚Π°ΠΊΠΆΠ΅ частично ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Modula-2 ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Паскаля.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π° систСмС GNU/Linux ΠΈΠ»ΠΈ BSD (ΠΈ установили срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ), Ρƒ вас, вСроятно, ΡƒΠΆΠ΅ установлСна готовая ΠΊ использованию послСдняя вСрсия GDB. Если Π½Π΅Ρ‚, исходный ΠΊΠΎΠ΄ GDB ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с FTP-сайта ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GNU для GDB[165] ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

GDB поставляСтся с собствСнным руководством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 300 страниц. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ исходного ΠΊΠΎΠ΄Π° GDB ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ руководства ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π² Free Software Foundation (FSF) Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Π΅ экзСмпляры; ваша ΠΏΠΎΠΊΡƒΠΏΠΊΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ FSF ΠΈ нСпосрСдствСнно внСсСт Π²ΠΊΠ»Π°Π΄ Π² производство большСго количСства свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. (Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π·Π°ΠΊΠ°Π·Π° см. Π½Π° Π²Π΅Π±-сайтС FSF)[166]. Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» описываСт лишь основы GDB; ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ руководство, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС прСимущСства возмоТностСй GDB.

15.3.1. Запуск GDB

ОсновноС использованиС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

gdb [ΠΎΠΏΡ†ΠΈΠΈ][исполняСмый Ρ„Π°ΠΉΠ» [имя Ρ„Π°ΠΉΠ»Π° Π΄Π°ΠΌΠΏΠ°]]

Π—Π΄Π΅ΡΡŒ исполняСмый Ρ„Π°ΠΉΠ» являСтся ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Имя Ρ„Π°ΠΉΠ»Π° Π΄Π°ΠΌΠΏΠ°, Ссли ΠΎΠ½ΠΎ имССтся, являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° core, созданном ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой с созданиСм снимка процСсса. Под GNU/Linux Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ core.pid[167], Π³Π΄Π΅ pid являСтся ID процСсса Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π±Ρ‹Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pid ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нСсколько Π΄Π°ΠΌΠΏΠΎΠ² ядра, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ дисковоС пространство!