Using SystemTap with PHP DTrace Static Probes: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '== Använda SystemTap med PHP DTrace statiska prober == På vissa Linux-distributioner kan SystemTap-spårningsverktyget användas för att spåra PHP:s statiska DTrace-prober. Detta är tillgängligt med PHP 5.4.20 och PHP 5.5. === Installera PHP med SystemTap === Installera SystemTap SDT-utvecklingspaketet: <pre><code># yum install systemtap-sdt-devel </code></pre> Installera PHP med DTrace-proberna aktiverade: <pre><code># ./configure --enable-dtrace ... # make...') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
(En mellanliggande sidversion av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
```mediawiki | |||
== Använda SystemTap med PHP DTrace statiska prober == | == Använda SystemTap med PHP DTrace statiska prober == | ||
På vissa Linux-distributioner kan SystemTap-spårningsverktyget användas för att spåra PHP:s statiska DTrace-prober. Detta är tillgängligt med PHP 5.4.20 och PHP 5.5. | På vissa Linux-distributioner kan SystemTap-spårningsverktyget användas för att spåra PHP:s statiska DTrace-prober. Detta är tillgängligt med PHP 5.4.20 och PHP 5.5. | ||
( Se [[Så du installera du SystemTap på Ubuntu / Debian]] ) | |||
=== Installera PHP med SystemTap === | === Installera PHP med SystemTap === | ||
Rad 7: | Rad 10: | ||
Installera SystemTap SDT-utvecklingspaketet: | Installera SystemTap SDT-utvecklingspaketet: | ||
<pre> | <pre> | ||
# yum install systemtap-sdt-devel | |||
</pre> | |||
Installera PHP med DTrace-proberna aktiverade: | Installera PHP med DTrace-proberna aktiverade: | ||
<pre> | <pre> | ||
# ./configure --enable-dtrace ... | |||
# make | # make | ||
</pre> | |||
=== Lista statiska prober med SystemTap === | === Lista statiska prober med SystemTap === | ||
Rad 20: | Rad 25: | ||
De statiska proberna i PHP kan listas med hjälp av `stap`: | De statiska proberna i PHP kan listas med hjälp av `stap`: | ||
<pre> | <pre> | ||
# stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i' | |||
</pre> | |||
Detta ger följande utdata: | Detta ger följande utdata: | ||
<pre> | <pre> | ||
process("sapi/cli/php").provider("php").mark("compile__file__entry") | |||
process("sapi/cli/php").provider("php").mark("compile__file__return") | process("sapi/cli/php").provider("php").mark("compile__file__return") | ||
process("sapi/cli/php").provider("php").mark("error") | process("sapi/cli/php").provider("php").mark("error") | ||
Rad 36: | Rad 43: | ||
process("sapi/cli/php").provider("php").mark("request__shutdown") | process("sapi/cli/php").provider("php").mark("request__shutdown") | ||
process("sapi/cli/php").provider("php").mark("request__startup") | process("sapi/cli/php").provider("php").mark("request__startup") | ||
</pre> | |||
=== SystemTap med PHP Exempel === | === SystemTap med PHP Exempel === | ||
Rad 42: | Rad 49: | ||
==== Exempel #1 all_probes.stp för att spåra alla PHP statiska prober med SystemTap ==== | ==== Exempel #1 all_probes.stp för att spåra alla PHP statiska prober med SystemTap ==== | ||
<pre> | <pre> | ||
probe process("sapi/cli/php").provider("php").mark("compile__file__entry") { | |||
printf("Probe compile__file__entry\n"); | printf("Probe compile__file__entry\n"); | ||
printf(" compile_file %s\n", user_string($arg1)); | printf(" compile_file %s\n", user_string($arg1)); | ||
Rad 104: | Rad 112: | ||
printf(" request_method %s\n", user_string($arg3)); | printf(" request_method %s\n", user_string($arg3)); | ||
} | } | ||
</pre> | |||
Ovanstående skript kommer att spåra alla kärn-PHP statiska probepunkter under hela körningen av ett PHP-skript: | Ovanstående skript kommer att spåra alla kärn-PHP statiska probepunkter under hela körningen av ett PHP-skript: | ||
<pre># stap -c 'sapi/cli/php test.php' all_probes.stp | <pre> | ||
# stap -c 'sapi/cli/php test.php' all_probes.stp | |||
</pre> | </pre> | ||
== Jämförbara ämnen == | |||
* [[OCI8 och DTrace Dynamisk Spårning]] | |||
``` | |||
= Sidslut = | = Sidslut = | ||
Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.dtrace.systemtap.php | Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.dtrace.systemtap.php |
Versionen från 6 oktober 2024 kl. 07.55
```mediawiki
Använda SystemTap med PHP DTrace statiska prober
På vissa Linux-distributioner kan SystemTap-spårningsverktyget användas för att spåra PHP:s statiska DTrace-prober. Detta är tillgängligt med PHP 5.4.20 och PHP 5.5.
( Se Så du installera du SystemTap på Ubuntu / Debian )
Installera PHP med SystemTap
Installera SystemTap SDT-utvecklingspaketet:
# yum install systemtap-sdt-devel
Installera PHP med DTrace-proberna aktiverade:
# ./configure --enable-dtrace ... # make
Lista statiska prober med SystemTap
De statiska proberna i PHP kan listas med hjälp av `stap`:
# stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i'
Detta ger följande utdata:
process("sapi/cli/php").provider("php").mark("compile__file__entry") process("sapi/cli/php").provider("php").mark("compile__file__return") process("sapi/cli/php").provider("php").mark("error") process("sapi/cli/php").provider("php").mark("exception__caught") process("sapi/cli/php").provider("php").mark("exception__thrown") process("sapi/cli/php").provider("php").mark("execute__entry") process("sapi/cli/php").provider("php").mark("execute__return") process("sapi/cli/php").provider("php").mark("function__entry") process("sapi/cli/php").provider("php").mark("function__return") process("sapi/cli/php").provider("php").mark("request__shutdown") process("sapi/cli/php").provider("php").mark("request__startup")
SystemTap med PHP Exempel
Exempel #1 all_probes.stp för att spåra alla PHP statiska prober med SystemTap
probe process("sapi/cli/php").provider("php").mark("compile__file__entry") { printf("Probe compile__file__entry\n"); printf(" compile_file %s\n", user_string($arg1)); printf(" compile_file_translated %s\n", user_string($arg2)); } probe process("sapi/cli/php").provider("php").mark("compile__file__return") { printf("Probe compile__file__return\n"); printf(" compile_file %s\n", user_string($arg1)); printf(" compile_file_translated %s\n", user_string($arg2)); } probe process("sapi/cli/php").provider("php").mark("error") { printf("Probe error\n"); printf(" errormsg %s\n", user_string($arg1)); printf(" request_file %s\n", user_string($arg2)); printf(" lineno %d\n", $arg3); } probe process("sapi/cli/php").provider("php").mark("exception__caught") { printf("Probe exception__caught\n"); printf(" classname %s\n", user_string($arg1)); } probe process("sapi/cli/php").provider("php").mark("exception__thrown") { printf("Probe exception__thrown\n"); printf(" classname %s\n", user_string($arg1)); } probe process("sapi/cli/php").provider("php").mark("execute__entry") { printf("Probe execute__entry\n"); printf(" request_file %s\n", user_string($arg1)); printf(" lineno %d\n", $arg2); } probe process("sapi/cli/php").provider("php").mark("execute__return") { printf("Probe execute__return\n"); printf(" request_file %s\n", user_string($arg1)); printf(" lineno %d\n", $arg2); } probe process("sapi/cli/php").provider("php").mark("function__entry") { printf("Probe function__entry\n"); printf(" function_name %s\n", user_string($arg1)); printf(" request_file %s\n", user_string($arg2)); printf(" lineno %d\n", $arg3); printf(" classname %s\n", user_string($arg4)); printf(" scope %s\n", user_string($arg5)); } probe process("sapi/cli/php").provider("php").mark("function__return") { printf("Probe function__return: %s\n", user_string($arg1)); printf(" function_name %s\n", user_string($arg1)); printf(" request_file %s\n", user_string($arg2)); printf(" lineno %d\n", $arg3); printf(" classname %s\n", user_string($arg4)); printf(" scope %s\n", user_string($arg5)); } probe process("sapi/cli/php").provider("php").mark("request__shutdown") { printf("Probe request__shutdown\n"); printf(" file %s\n", user_string($arg1)); printf(" request_uri %s\n", user_string($arg2)); printf(" request_method %s\n", user_string($arg3)); } probe process("sapi/cli/php").provider("php").mark("request__startup") { printf("Probe request__startup\n"); printf(" file %s\n", user_string($arg1)); printf(" request_uri %s\n", user_string($arg2)); printf(" request_method %s\n", user_string($arg3)); }
Ovanstående skript kommer att spåra alla kärn-PHP statiska probepunkter under hela körningen av ett PHP-skript:
# stap -c 'sapi/cli/php test.php' all_probes.stp
Jämförbara ämnen
```
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.dtrace.systemtap.php
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp.se som har sponsrat Linux.se med webserver.