Using SystemTap with PHP DTrace Static Probes: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(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...')
 
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><code># yum install systemtap-sdt-devel
<pre>
</code></pre>
# yum install systemtap-sdt-devel
</pre>


Installera PHP med DTrace-proberna aktiverade:
Installera PHP med DTrace-proberna aktiverade:


<pre><code># ./configure --enable-dtrace ...
<pre>
# ./configure --enable-dtrace ...
# make
# make
</code></pre>
</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><code># stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i'
<pre>
</code></pre>
# stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i'
</pre>


Detta ger följande utdata:
Detta ger följande utdata:


<pre><code>process("sapi/cli/php").provider("php").mark("compile__file__entry")
<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")
</code></pre>
</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><code>probe process("sapi/cli/php").provider("php").mark("compile__file__entry") {
<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));
}
}
</code></pre>
</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

PHP

Funktioner


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.