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

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

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

β€’Β ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ. На ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах компиляция с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ компиляция с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ нСсовмСстимы. Π­Ρ‚ΠΎ Π½Π΅ относится ΠΊ GCC, Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ GNU/Linux Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

β€’Β ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU GDB являСтся стандартом Π½Π° систСмах GNU/Linux ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° любой коммСрчСской систСмС Unix. (Π’Π°ΠΊΠΆΠ΅ доступны ΠΈ Π»Π΅Π³ΠΊΠΎ пСрСносимы графичСскиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ Π½Π° основС GDB.) ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, отслСТиваСмыС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ пошаговоС исполнСниС с посрСдством

next
,
step
ΠΈ
cont
ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΡ€ΠΈ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅. GDB позволяСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Β β€’Β Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ мноТСство Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π΅Π΅ упрощСния, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ придСтся Π΅Π΅ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ рассмотрСли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

Β β€’Β ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ макросы для Π²Ρ‹Π²ΠΎΠ΄Π° состояния.

Β β€’Β Π˜Π·Π±Π΅Π³Π°Π½ΠΈΠ΅ макросов с выраТСниями.

Β β€’Β ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΡƒ ΠΊΠΎΠ΄Π° для облСгчСния пошагового выполнСния.

 ‒ НаписаниС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для использования ΠΈΡ… ΠΈΠ· ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Β β€’Β Π˜Π·Π±Π΅Π³Π°Π½ΠΈΠ΅ объСдинСний.

Β β€’Β ΠŸΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Π² Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ обСспСчСниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹Π²ΠΎΠ΄Π° этого ΠΊΠΎΠ΄Π°.

Β β€’Β Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для упрощСния установки ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

‒ Для ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ простых ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния сущСствуСт ряд инструмСнтов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

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

‒ БущСствуСт мноТСство ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для динамичСской памяти, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ сходныС свойства. ΠœΡ‹ рассмотрСли Ρ‚Ρ€ΠΈ ΠΈΠ· Π½ΠΈΡ… (

mtrace
, Electric Fence ΠΈ
dmalloc
) ΠΈ прСдоставили ссылки Π½Π° нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Valgrind ΠΈΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ дальшС, обнаруТивая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, относящиСся ΠΊ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ памяти, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ динамичСской памяти.

β€’Β 

splint
являСтся соврСмСнной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ V7
lint
. Она доступна ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π° систСмС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· поставщиков GNU/Linux ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈ построСна ΠΈΠ· исходных ΠΊΠΎΠ΄ΠΎΠ².

β€’Β ΠŸΠΎΠΌΠΈΠΌΠΎ инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния являСтся Ρ‚Π°ΠΊΠΆΠ΅ тСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π•Π΅ слСдуСт ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Сю с самого Π½Π°Ρ‡Π°Π»Π° любого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π΄Π°ΠΆΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ.

β€’Β ΠžΡ‚Π»Π°Π΄ΠΊΠ° являСтся ΡƒΠΌΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ Debugging Дэвида Π”ΠΆ. Эганса ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

УпраТнСния

1.Β ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GCC, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ°ΠΊ

-g
, Ρ‚Π°ΠΊ ΠΈ
-O
. ЗапуститС Π΅Π΅ ΠΏΠΎΠ΄ GDB, установив ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²
main()
. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ пошагово ΠΈ посмотритС, насколько Π±Π»ΠΈΠ·ΠΊΠΎ соотвСтствуСт (ΠΈΠ»ΠΈ Π½Π΅ соотвСтствуСт) исполнСниС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ исходному ΠΊΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ особСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ Ρ†ΠΈΠΊΠ»Ρ‹
while
ΠΈΠ»ΠΈ
for
.

2.Β ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΠ± особСнности GDB условной ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Насколько это ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ лишь послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ?

3.Β ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

parse_debug()
ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 15.4.2.1 «ДобавляйтС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строк ΠΎΠΏΡ†ΠΈΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„Π»Π°Π³ΠΎΠ² ΠΈ Π΄Π»ΠΈΠ½ строк

4.Β (Π’Ρ€ΡƒΠ΄Π½ΠΎΠ΅.) Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ исходный ΠΊΠΎΠ΄

gawk
; Π² частности, структуру
NODE
Π²
awk.h
. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС
NODE
, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π² ΠΏΠΎΠ»Π΅
type
.

5.Β Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ

dbug
. ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π΅ сначала Π±Π΅Π·
-DDBUG
, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° компилируСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. (Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас для Π½Π΅Π΅ Π½Π°Π±ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½Ρ‹Ρ… тСстов? ΠŸΡ€ΠΎΡˆΠ»Π° Π»ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всС тСсты?)

УбСдившись, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

dbug
Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π΅ с
-DDBUG
. По-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π»ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всС свои тСсты? Какова Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅? ЗапуститС ваш тСстовый Π½Π°Π±ΠΎΡ€ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ
-#t
, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ трассировку Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄Π° ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅Ρ‚?

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

7.Β ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Valgrind с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ.

8.Β Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π½Π°Π±ΠΎΡ€ тСстов для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

mv
. (ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ mv(1): ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΠ»ΠΈ всС Π΅Π΅ ΠΎΠΏΡ†ΠΈΠΈ.)

9.Β ΠŸΠΎΠΈΡ‰ΠΈΡ‚Π΅ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ рСсурсы ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. КакиС интСрСсныС Π²Π΅Ρ‰ΠΈ Π²Ρ‹ нашли?

Π“Π»Π°Π²Π° 16

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ всС Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ‹ довольно Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ связали всС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ прСдставлСно, рассмотрСв V7

ls.c
. Однако, Π½Π΅Ρ‚ достаточно нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, насколько Π±Ρ‹ это Π½Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ всС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ API, прСдставлСнныС начиная с Π³Π»Π°Π²Ρ‹ 8 Β«Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²Β».

16.1. ОписаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

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

НастоящиС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ большими ΠΈ бСспорядочными творСниями. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ пСрСносимости, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ обрисовывали ΠΏΠΎ всСй ΠΊΠ½ΠΈΠ³Π΅, Π° ΠΏΠΎΠΌΠΈΠΌΠΎ этого, ΠΎΠ½ΠΈ часто Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ошибки Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях Unix Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ мноТСство Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ API систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ сохранСнных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ‚.Π΄. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Π·ΠΎΡ€Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Bash,

ksh93
ΠΈΠ»ΠΈ
zsh
, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.

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

1.Β Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ свой ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ «язык», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого ΠΊΠΎΠ΄Π°. Π₯отя тСхнология компиляторов ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ написании ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΊΠ°ΠΊ издСлия, для вас Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это, вСроятно, излишнС.

РассмотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹: