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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 121

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

[email protected]:~/BLP4e/chapter10> splint -strict debug0.c

Splint 3.1.1 --- 19 Mar 2005


debug0.c:7:18: Read-only string literal storage used as initial value for

               unqualified storage: array[0].data = "bill"

A read-only string literal is assigned to a non-observer reference. (Use -readonlytrans to inhibit warning)

debug0.c:8:18: Read-only string literal storage used as initial value for

               unqualified storage: array[1].data = "neil"

debug0.c:9:18: Read-only string literal storage used as initial value for

               unqualified storage: array[2].data = "john"

debug0.с:10:18: Read-only string literal storage used as initial value for

               unqualified storage: array[3].data = "rick"

debug0.c:11:18: Read-only string literal storage used as initial value for

               unqualified storage: array[4].data = "alex"

debug0.с:14:22: Old style function declaration

 Function definition is in old style syntax. Standard prototype syntax is

 preferred. (Use -oldstyle to inhibit warning)

debug0.с: (in function sort)

debug0.c:20:31: Variable s used before definition

 An rvalue is used that may not be initialized to a value on some execution

 path. (Use -usedef to inhibit warning)

debug0.с:20:23: Left operand of & is not unsigned value (boolean):

               i < n & s != 0

 An operand to a bitwise operator is not an unsigned values. This may have

 unexpected results depending on the signed representations. (Use

 -bitwisesigned to inhibit warning).

debug0.c:20:23: Test expression for for not boolean, type unsigned int:

               i < n & s != 0

 Test expression type is not boolean or int. (Use -predboolint to inhibit

 warning);

debug0.с:25:41: Undocumented modification of a[]: a[j] = a[j + 1]

 An externally-visible object is modified by a function with no /*@ [email protected]*/

 comment. The /*@modifies ... @*/ control comment can be used to give a

 modifies list for an unspecified function. (Use -modnomods to inhibit

 warning)

debug0.c:26:41: Undocumented modification of a[]: a[j + 1] = t

debug0.c:20:23: Operands of & are non-integer (boolean) (in post loop test):

               i < n & s != 0

 A primitive operation does not type check strictly. (Use -strictops to

 inhibit warning)

debug0.с:32:14: Path with no return in function declared to return int

 There is a path through a function declared to return a value on which there

 is no return statement. This means the execution may fall through without

 returning a meaningful result to the caller. (Use -noret to inhibit

 warning)

debug0.с:34:13: Function main declared without parameter list

 A function declaration does not have a parameter list. (Use -noparams

 to inhibit warning)

debug0.с: (in function main)

debug0.с:36:22: Undocumented use of global array

 A checked global variable is used in the function, but not listed in its

 globals clause. By default, only globals specified in .lcl files are

 checked.

 To check all globals, use +allglobals. To check globals selectively use

 /*@ [email protected]*/ in the global declaration. (Use -globs to inhibit warning)

debug0.с:36:17: Undetected modification possible from call to unconstrained

               function sort: sort

 An unconstrained function is called in a function body where

 modifications are checked. Since the unconstrained function may modify

 anything, there may be undetected modifications in the checked function.

 (Use -modunconnomods to inhibit warning)

debug0.c:36:17: Return value (type int) ignored: sort(array, 5)

 Result returned by function call is not used. If this is intended, can

 cast result to (void) to eliminate message. (Use -retvalint to inhibit

 warning)

debug0.c:37:14: Path with no return in function declared to return int

debug0.c:6:18: Variable exported but not used outside debug0: array

 A declaration is exported, but not used outside this module. Declaration

 can use static qualifier. (Use -exportlocal to inhibit warning)

debug0.c:14:13: Function exported but not used outside debug0: sort

 debug0.c:15:17: Definition of sort

debug0.c:6:18: Variable array exported but not declared in header file

 A variable declaration is exported, but does not appear in a header

 file. (Used with exportheader.) (Use -exportheadervar to inhibit warning)

debug0.c:14:13: Function sort exported but not declared in header file

 A declaration is exported, but does not appear in a header file. (Use

 -exportheader to inhibit warning)

debug0.c:15:17: Definition of sort


Finished checking - 22 code warnings

$

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π΅ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² старом стилС (Π½Π΅ ANSI) ΠΈ нСсоотвСтствия Ρ‚ΠΈΠΏΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… функциями, ΠΈ самими Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ (ΠΈΠ»ΠΈ Π½Π΅Ρ‚) Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π­Ρ‚ΠΈ прСдупрСТдСния Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹.

Она Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»Π° Π΄Π²Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π°:

/* 18 */  int s;

/* 19 */

/* 20 */  for(; i < n & s != 0; i++) {

/* 21 */   s = 0;

БрСдство splint ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΎ (Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠΌ строки ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°), Ρ‡Ρ‚ΠΎ пСрСмСнная s ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² строкС 20, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈ этом ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & стоит Π½Π° мСстС Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° &&. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ условия ΠΈ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ОбС эти ошибки Π±Ρ‹Π»ΠΈ исправлСны ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ запуска процСсса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Π»ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚Π΅Π»Π΅Π½ ΠΈ слуТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для дСмонстрации, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ошибки рСгулярно Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…."

БрСдства, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’Ρ€ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ β€” ctags, cxref ΠΈ cflow β€” Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ Ρ‡Π°ΡΡ‚ΡŒ стандарта X/Open ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² систСмы, прСдставляСмыС ΠΊΠ°ΠΊ систСмы UNIX с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ срСдствами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹Π΅ Π² этой Π³Π»Π°Π²Π΅, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² состав вашСго дистрибутива Linux. Если ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ отправная Ρ‚ΠΎΡ‡ΠΊΠ° (для дистрибутивов Linux, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²) β€” Web-сайты http://rpmfind.net ΠΈ http://rpm.pbone.net. МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рСпозитариях для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… дистрибутивов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ http://ftp.gwdg.de/pub/opensuse/ для openSUSE, http://rpm.livna.org для Fedora ΠΈ http://packages.slackware.it/ для Slackware.

ctags

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ctags создаСт Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ мСст Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π³Π΄Π΅ ΠΎΠ½Π° примСняСтся, ΠΊΠ°ΠΊ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΊ ΠΊΠ½ΠΈΠ³Π΅.

ctags [-a] [-f filename] sourcefile sourcefile ...

ctags -x sourcefile sourcefile ...

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ctags создаСт Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ tags, содСрТащий для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, объявлСнной Π² любом ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π°, строки ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

announce app_ui.c /^static void announce(void) /

КаТдая строка Ρ„Π°ΠΉΠ»Π° содСрТит имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° объявлСна, ΠΈ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π΅. НСкоторыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Emacs, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ этого Π²ΠΈΠ΄Π° для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π² исходном тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ctags (Ссли ΠΎΠ½Π° доступна Π² вашСй вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² стандартном Ρ„Π°ΠΉΠ»Π΅ Π²Ρ‹Π²ΠΎΠ΄Π°.

find_cat 403 appui.с static cdc_entry find_cat(

МоТно ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -f filename ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ† ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΡƒΠΊΠ°Π·Π°Π² ΠΎΠΏΡ†ΠΈΡŽ -Π°.

cxref

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° cxref Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ исходный тСкст Π½Π° языкС Π‘ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ пСрСкрСстныС ссылки. Она ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ упоминаСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ символичСскоС имя (пСрСмСнная, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define ΠΈ функция). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт отсортированный список с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ мСста опрСдСлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ помСчаСтся Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:

 SYMBOL                FILE  FUNCTION LINE

 BASENID               prog.с      --  *12 *96 124 126 146 156 166

 BINSIZE               prog.с      --  *30 197 198 199. 206

  BUFMAX               prog.с      --  *44 45 90

  BUFSIZ /usr/include/stdio.h      --  *4

     EOF /usr/include/stdio.h      --  *27

    argc               prog.с      --  36

                       prog.с    main  *37 61 81

    argv               prog.с      --  36

                       prog.с    main  *38 61

calldata               prog.с      --  *5

                       prog.с    main  64 188

  calls                prog.с      --  *19

                       prog.с     main 54

На машинС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π±Ρ‹Π» сгСнСрирован Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

$ cxref *.с *.h

Π½ΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ синтаксис зависит ΠΎΡ‚ вСрсии. Π‘ΠΌ. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊ вашСй систСмС ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ справочноС руководство для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° cxref ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

cflow

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° cflow Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ β€” схСму, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ этими Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈ Ρ‚.Π΄. Π­Ρ‚Π° схСма ΠΏΠΎΠ»Π΅Π·Π½Π° для выяснСния структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, понимания Π΅Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² дСйствия ΠΈ наблюдСния Π·Π° влияниСм ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НСкоторыС вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ cflow ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ с исходными. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ справочном руководствС.