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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² срСдС Linux. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор Майкл ДТонсон

OBJS := foo.ΠΎ

OBJS := $(OBJS) bar.ΠΎ

OBJS := $(OBJS) baz.ΠΎ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ := заставляСт GNU make Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ присваивании, Π° Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ вычислСния выраТСния ΠΏΡ€ΠΈ Π΅Π³ΠΎ использовании Π² ΠΏΡ€Π°Π²ΠΈΠ»Π΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π° OBJS Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ foo.ΠΎ bar.ΠΎ baz.ΠΎ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто, Π½ΠΎ Π² GNU make Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ синтаксис присваивания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позаимствован ΠΈΠ· языка Π‘:

OBJS := foo.ΠΎ

OBJS += bar.ΠΎ

OBJS += baz.ΠΎ

4.2.3. БуффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π°

БуффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π° β€” это другая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΈ стандартныС make-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ GNU. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ суффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π΅Π΅, Π½Π΅ΠΆΠ΅Π»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° GNU, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях стандартныС суффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ Π²ΠΎ всСх вСрсиях make. БуффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π° выглядят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

.c.o:

$(CC) -с $ (CFLAGS) $ (CPPFLAGS) -о $<

.SUFFIXES: .с .о

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

Π­Ρ‚ΠΎ суффиксноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ дСмонстрируСт Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ make β€” автоматичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ способ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. АвтоматичСская пСрСмСнная [email protected] выступаСт Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, $< выступаСт Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠΉ зависимости, Π° $^ прСдставляСт всС зависимости.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ автоматичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² руководствС ΠΏΠΎ make. ВсС автоматичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² суффиксных ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ….

ПослСдняя строка ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° прСдставляСт Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ. .SUFFIXES ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ make Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ .с ΠΈ .ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ суффиксами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ make для нахоТдСния способа ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Ρ‡Π΅ΠΌ суффиксныС ΠΏΡ€Π°Π²ΠΈΠ»Π°. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ эквивалСнтного шаблонного ΠΏΡ€Π°Π²ΠΈΠ»Π° для ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ суффиксного ΠΏΡ€Π°Π²ΠΈΠ»Π°.

% .о: % .с

$(CC) -с $(CFLAGS) $(CPPFLAGS) -о $<

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ make ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² [26]. GNU make Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ руководство Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Texinfo, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° сайтС FSF, Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ Ρƒ Π½ΠΈΡ… Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструмСнты Automake, Autoconf ΠΈ Libtool. Π­Ρ‚ΠΈ инструмСнты ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π·Π½Π°Π½ΠΈΠΉ ΠΎΠ± особСнностях Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм ΠΈ стандартах сообщСства, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² построСнии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, потрСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, спСцифичСского для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НапримСр, Automake ΠΏΠΈΡˆΠ΅Ρ‚ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ install ΠΈ uninstall, Autoconf автоматичСски опрСдСляСт возмоТности систСмы ΠΈ настраиваСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Π΅Π³ΠΎ соотвСтствия систСмС, a Libtool отслСТиваСт различия Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… систСмах.

По этим Ρ‚Ρ€Π΅ΠΌ инструмСнтам написана цСлая ΠΊΠ½ΠΈΠ³Π° β€” [41]; здСсь ΠΌΡ‹ Π΄Π°Π΅ΠΌ лишь основу, которая понадобится для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GNU Autoconf, Automake ΠΈ Libtool.

4.3. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GNU

gdb β€” это ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ Free Software Foundation, gdb прСдставляСт собой Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строятся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π΅ΠΆΠΈΠΌ gdb Π² Emacs, графичСский ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Data Display Debugger (http://www.gnu.org/software/ddd/) ΠΈ встроСнныС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… графичСских интСрфСйсах IDE. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ рассматриваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ gdb.

ЗапуститС gdb с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ gdb имя_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. gdb Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ PATH Π² поисках исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для исполняСмого Ρ„Π°ΠΉΠ»Π° ΠΈ запросит Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствий.

БущСствуСт Ρ‚Ρ€ΠΈ способа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ процСсс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gdb.

β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ run для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ attach для Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ процСсса. ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ процСссу, послСдний останавливаСтся.

β€’ Π˜ΡΡΠ»Π΅Π΄ΡƒΡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» ядра для опрСдСлСния состояния процСсса ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ. Для исслСдования Ρ„Π°ΠΉΠ»Π° ядра gdb потрСбуСтся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ имя_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„Π°ΠΉΠ»_ядра.

ΠŸΠ΅Ρ€Π΅Π΄ запуском ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ процСссу ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ относятся ΠΊ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ процСссу.

gdb Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹; ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ r достаточно для run, n β€” для next, s β€” для step. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, для повторСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто употрСбляСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΡƒΠΆΠ½ΠΎ просто Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Enter>. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ становится ΠΏΡ€ΠΎΡ‰Π΅.

НиТС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ нСбольшой Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ gdb; gdb Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²ΠΎΠ΅ руководство Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ GNU info (запуститС info gdb), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ всС ΠΎΠΏΡ†ΠΈΠΈ gdb. Π’ [19] содСрТится Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с gdb. gdb Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ справку, ссылки Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ gdb; доступ ΠΊ справочным Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ввСдя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ help. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ справку ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π½Π°Π±Ρ€Π°Π² help ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ»ΠΈ help Ρ‚Π΅ΠΌΠ°.

Подобно ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ gdb ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. "Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ help с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ "Π½Π°Π±Ρ€Π°Ρ‚ΡŒ help ΠΊΠΎΠΌΠ°Π½Π΄Π°".

НСкоторыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ gdb Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для спСцификации Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ косой Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ. ПослС Π²Ρ‹Π±ΠΎΡ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚; gdb Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ символом / ΠΈ состоят ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов: Ρ†ΠΈΡ„Ρ€Π°, Π±ΡƒΠΊΠ²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈ Π±ΡƒΠΊΠ²Π°, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π¦ΠΈΡ„Ρ€Π° ΠΈ Π±ΡƒΠΊΠ²Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² качСствС Ρ†ΠΈΡ„Ρ€Ρ‹ устанавливаСтся 1, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ подходящСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, основанноС Π½Π° Π±ΡƒΠΊΠ²Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Π‘ΡƒΠΊΠ²Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: ΠΎ для обозначСния Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа, x для ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа, d для дСсятичного числа, ΠΈ для Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ дСсятичного числа, t для Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, f для числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π° для адрСса, i для инструкций, с для символа, s для строки.

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠ²Ρ‹: b β€” Π±Π°ΠΉΡ‚, h β€” полуслово (2 Π±Π°ΠΉΡ‚Π°), w β€” слово (4 Π±Π°ΠΉΡ‚Π°), g β€” слово-Π³ΠΈΠ³Π°Π½Ρ‚ (8 Π±Π°ΠΉΡ‚).

attach, at

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΊ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ процСссу. ЕдинствСнным Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса (pid), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ осущСствляСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ установлСно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, прСрывая Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ. Π‘ΠΌ. detach.

backtrace, bt, where, w

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ трассировку стСка.

break, b

УстанавливаСт Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания. МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎΠΌΠ΅Ρ€ строки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° (Ρ„Π°ΠΉΠ», содСрТащий выполняСмый Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄), ΠΏΠ°Ρ€Ρƒ имя_Ρ„Π°ΠΉΠ»Π°:Π½ΠΎΠΌΠ΅Ρ€_строки ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ адрСс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ *адрСс.gdb Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ прСрывания. Π‘ΠΌ. condition, clear ΠΈ delete.

clear

УдаляСт Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠ°ΠΊ break. Π‘ΠΌ. delete.

condition

Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ (см. break), для прСрывания, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно. Π”ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ выраТСния.

(gdb) b664

Breakpoint 3 at 0Ρ…804Π°5с0: file ladsh4.c, line664.

(gdb) condition 3 status==0

delete

УдаляСт Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.

detach

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ процСсса.

display

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ остановкС выполнСния. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°), ΠΊΠ°ΠΊ print. Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ отобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ впослСдствии ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ отобраТСния. Π‘ΠΌ. undisplay.