Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Une sorte de debuguage ?
Envoyé par: Galoula

Bonjour,

J'aimerais savoir s'il est possible de voir TOUT ce qu'il se passe entre deux fichier comme le fairais un sniffeur reseau.

exemple :

apache2 (httpd)-MonSniffeur-(php5)

devrais me donner un truc genre :

code source --> MonSnifeeur(DUMP)-->php5-->MonSniffeur(DUMP)-->Page HTML.

J'aimerais savoir comment se passe cette transaction au plus fin détail.

Donc les log me sont totalement inutiles.

Se seras pour un projet, et notament pour debuguer un module de PHP.

Voyez vous dejas si cella est possible (a pas crasher expliitement ma becanne pour lire le swap) pour etudier cella ?

Merci.

___________________________
Le site de Galoula France !
[www.galoula.com]

Poste le Thursday 24 July 2008 00:29:00
Répondre     Citer    
Re: Une sorte de debuguage ?

Je n'ai rien compris.

Il me semble que PHP5 est un module d'Apache2. Il n'y a donc pas forcément échange de données dans un fichier (tout passe en mémoire).

Peut-être qu'un PHP5 configuré en FastCGI (avec par exemple un serveur Lighttpd) conviendrait mieux à ton expérimentation.

Si tu y tiens vraiment, tu peux tracer les appels systèmes (du php6-cli) par strace.

Et il est possible que les moteurs PHP (Zend) aient des modes de débogage inhabituels.

Quand à la difficulté de coder en PHP (que je déteste aussi) as tu envisagé d'autres alternatives, par exemple Ocsigen ou Kaya?

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 24 July 2008 06:37:46
Répondre     Citer    
Re: Une sorte de debuguage ?
Envoyé par: Galoula

Bonjour,

Je joué toute la nuit avec strace -s 9999 -f /etc/init.d/apache2 restart.

Bon ça me donne presque ce que je veux : je vois bien les apels et la lecture des fichiers (j'ai eu de belle surprises !).

J'ai énormement réfléchis sur les sorties de straces. Maintenant je sait ce qu'il me faut :

Comprendre ceci :
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4e000
mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d3a000
munmap(0xb6e4e000, 266240)              = 0
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4e000
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6cf9000
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6cb8000
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6c77000
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6c36000
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6bf5000
Si j'ai tout capte ce mmap2 est ma RAM (SWAP ?).
Bein ce que je veux c'est êtres bourrin : récupérer ce qu'il y as dedans.

Le binaire qui se trouve dans ce mmap est ma solution !

Comment demander à un programme de me "dumper ?" TOUS ce qu'il fait ?

Un peut comme si je copiais tous ce qu'il ferais en RAM en parralelle pour après étudier la chose.

Je ne m'inquiete pas sur les taille de fichiers, j'ai atteins les 1,9Go cette nuit à un moment :p

Merci :-)

___________________________
Le site de Galoula France !
[www.galoula.com]

Poste le Thursday 24 July 2008 07:12:04
Répondre     Citer    
Re: Une sorte de debuguage ?

Citation
galoula
Je joué toute la nuit avec strace -s 9999 -f /etc/init.d/apache2 restart.
Tu aurais dû dormir un peu. La nuit porte conseil. Je débogue souvent en rêvant!
Citation
galoula
Comprendre ceci
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e4e000
Si j'ai tout capté ce mmap2 est ma RAM

Oh non!

mmap2 est une variante (linux spécifique) de mmap. L'appel système mmap (RTFM) est le moyen (avec munmap et mprotect et execve) pour un processus de modifier son espace d'adressage. Dans le cas général (option MAP_FILE ou simplement absence de MAP_ANONYMOUS) il ajoute une projection mémoire d'un segment de fichier. Dans le cas de l'option MAP_ANONYMOUS, il ajoute une projection mémoire d'un segment anonyme (souvent mais pas toujours matérialisé dans la zone de swao).

En pratique, mmap est l'appel système utilisé par la fonction malloc.

Mais il te manque une compréhension claire de la notion d'espace d'adressage, de processus, d'adresse virtuelle, ... Je te renvoie à la littérature abondante sur le sujet.

Pour déboguer ton PHP, tu pourrais

* passer à autre chose de mieux (Ocsigen, Kaya, ...)

* ajouter des printf -vers un fichier de débogage- dans ton code PHP

* recompiler PHP et y ajouter des impressions de débogage.

* utiliser ltrace

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 24 July 2008 07:30:27
Répondre     Citer    
Re: Une sorte de debuguage ?
Envoyé par: Galoula

Je ne cache pas que avant 19H hier je ne savait même pas que tout cella existait...

Mais je reviens à une chose réelle : Je ne débuge pas un simple script php comme on pourrait le dire avec print_f.

Je cherche à intercepté tout ce qui se passe pour essayer de recupéré un bout de code.

- passer à autre chose de mieux (Ocsigen, Kaya, ...)
(Connait pas :-))

- ajouter des printf -vers un fichier de débogage- dans ton code PHP
Ce que je fait avec les script php "normaux".

- recompiler PHP et y ajouter des impressions de débogage.
Si l'on m'explique une peut la chose yas aucun soucis si ca peut avance mon délire :-)

- utiliser ltrace
Je viens de lancer la commande, ca fait une sorte de boucle ... puis apres j'ai la main : Je dois comprendre comment ca marche maintenant !

Merci.

Poste le Thursday 24 July 2008 07:44:41
Répondre     Citer    
Re: Une sorte de debuguage ?

J'ignore ce que tu veux faire, mais regarde quand même Ocsigen et Kaya (ou tout autre langage un peu meilleur que PHP, ce n'est pas difficile, pour développer des applications Web).

Pour comprendre ltrace RTFM.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 24 July 2008 08:00:35
Répondre     Citer    
Re: Une sorte de debuguage ?
Envoyé par: Galoula

Merci,

Je matterais pour ma culture G ces languages.

Alors j'ai un peut joué avec le ltrace :

Je remarque que le déroulement du fichier se passe exactement pareil.

Avec des détails en plus.

Mais je crois capter que mon chieur de mmap2 qui me donne pas son contenu me dit une peut la même chose avec ltrace :

J'ai ENORMEMENT de fois cette ligne : __ctype_tolower_loc() = 0xb78e96ac


et de temps en temps des choses resemblent à ceci :
malloc(262144)
memcpy(0xb6d00dfc, "", 0)
memcpy(0xb6d015f8, "", 0)
memcpy(0xb6d01a1c, "", 0)
memcpy(0xb6d01bec, "meth_merge_autoany", 19)
memcpy(0xb6d01c1c, "", 140)

Il est sympas : Si je capte il me dit qui aloue de la mémoire et y copie des choses ... MAIS QUOI ????


Merci ... (Petit repos MNT :-))

Poste le Thursday 24 July 2008 08:13:20
Répondre     Citer    
Re: Une sorte de debuguage ?
Envoyé par: AlSim

Citation
Galoula
- passer à autre chose de mieux (Ocsigen, Kaya,
...)
(Connait pas)
Kaya je ne connaissais pas, Ocsigen si mais c'est quand même des projets un peu marginaux. Dans le plus "connu" tu as par exemple Rails ou de frameworks Python. Si tu connais un langage de programmation, tu peux probablement t'en servir pour le web avec les bibliothèques qui vont bien.

[catwell.info]

Poste le Thursday 24 July 2008 12:41:53
Répondre     Citer    
Re: Une sorte de debuguage ?
Envoyé par: Galoula

Merci,

Je matterais pour ma culture G ces languages.

Alors j'ai un peut joué avec le ltrace :

Je remarque que le déroulement du fichier se passe exactement pareil.

Avec des détails en plus.

Mais je crois capter que mon chieur de mmap2 qui me donne pas son contenu me dit une peut la même chose avec ltrace :

J'ai ENORMEMENT de fois cette ligne : __ctype_tolower_loc() = 0xb78e96ac


et de temps en temps des choses resemblent à ceci :
malloc(262144)
memcpy(0xb6d00dfc, "", 0)
memcpy(0xb6d015f8, "", 0)
memcpy(0xb6d01a1c, "", 0)
memcpy(0xb6d01bec, "meth_merge_autoany", 19)
memcpy(0xb6d01c1c, "", 140)

Il est sympas : Si je capte il me dit qui aloue de la mémoire et y copie des choses ... MAIS QUOI ????


Merci ... (Petit repos MNT :-))

___________________________
Le site de Galoula France !
[www.galoula.com]

Poste le Thursday 24 July 2008 14:28:34
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Une sorte de debuguage ?
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons