6$ <b>factorial -#t 1 2 3</b>/* ΠΡΠ²Π΅ΡΡΠΈ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ */| >factorial| <factorial1 /* ΠΠ±ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² stdout */| >factorial| | >factorial| | <factorial /* ΠΡΠ²ΠΎΠ΄ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² stderr */| <factorial2| >factorial| | >factorial| | | >factorial| | | <factorial| | <factorial| <factorial6<?func?$ <b>factorial -#d 1 2</b>/* ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ DBUG_PRINT() */?func?: args: argv[2] = 1factorial: find: find 1 factorialfactorial: result: result is 11?func?: args: argv[3] = 2factorial: find: find 2 factorialfactorial: find: find 1 factorialfactorial: result: result is 1factorial: result: result is 22ΠΠΏΡΠΈΡ
-#dbugDBUG_PUSH()-#DBUG_PUSH()getopt()optargΠ£ΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΎΠΏΡΠΈΠΉ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ Π³ΡΡΠΏΠΏΠ° ΠΎΠΏΡΠΈΠΉ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΎΠΏΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΠΊΠ²ΠΎΠΉ, Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΡΡΡΡ ΠΎΡ Π½Π΅Π΅ Π·Π°ΠΏΡΡΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$ myprog -#d,mem,ipc:f,check_salary,check_start_date -f infile -o outfileΠΠΏΡΠΈΡ
dDBUG_PRINT()memipcDBUG_PRINT()fcheck_salary()check_start_date()Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΡΠΈΠΉ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΈΠ· ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
dbugd [,ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°]Π Π°Π·ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΠΎΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ. ΠΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°.
FΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΎΡ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄.
iΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ, Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΎΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ID Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
LΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΌΠ°ΠΊΡΠΎΡ.
ΠΎ[,ΡΠ°ΠΉΠ»]ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎΡΠΎΠΊΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ
stderrstdoutt[,N]ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ
NΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ
dbugDBUG_EXECUTE(ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΠ΄)ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΏΠΎΡ ΠΎΠΆ Π½Π°
DBUG_PRINT()dDBUG_EXECUTE("abort", abort());DBUG_FILEΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ°
FILE*<stdio.h>DBUG_LONGJMP(jmp_buf env, int val)ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π²ΡΠ·ΠΎΠ²
longjmp()dbugDBUG_POP()ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π²ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅Ρ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ
DBUG_PUSH()DBUG_SETJMP(jmp_buf env)ΠΡΠΎΡ ΠΌΠ°ΠΊΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π²ΡΠ·ΠΎΠ²
setjmp()dbugΠ Π΄ΡΡΠ³ΠΎΠΌ Π²ΠΎΠΏΠ»ΠΎΡΠ΅Π½ΠΈΠΈ, Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ [177], ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
dbug-DDBUGΠ§ΡΠΎΠ±Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π²ΡΠ³ΠΎΠ΄Ρ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
dbugawk