Difference between revisions of "Koozali SME Server Debugging/fr"

From SME Server
Jump to navigationJump to search
(Created page with "{{Languages|Koozali_SME_Server_Debugging}} ===Débogage du serveur=== Un problème souvent rencontré par les nouveaux développeurs est le débogage du code Perl sur votre...")
 
 
(3 intermediate revisions by the same user not shown)
Line 35: Line 35:
 
$key. Sinon, il imprime la clé, le type et les propriétés de toutes les
 
$key. Sinon, il imprime la clé, le type et les propriétés de toutes les
 
clés.
 
clés.
 
 
  
 
  =item B<db_print_type>
 
  =item B<db_print_type>
Line 70: Line 68:
 
  q - quit
 
  q - quit
  
===Remote debugging using an IDE===
+
===Débogage à distance à l'aide d'un environnement de développement (IDE) ===
  
I have been using Komodo IDE courtesy of an Open Source Developers licence from [http://komodoide.com/ Activestate]
+
J'utilise Komodo IDE grâce à une licence pour développeurs « Open Source » de [http://komodoide.com/ Activestate].
  
You can now get the app for free here but need a free account to use it:
+
Vous pouvez désormais obtenir l'application gratuitement ici, mais vous avez besoin d'un compte gratuit pour l'utiliser :
  
https://www.activestate.com/products/komodo-ide/download-ide/
+
https://www.activestate.com/products/komodo-ide/download-ide/
  
The simplest mode to use with Komodo IDE is to just use the IDE as a debugger to step through code. Code on the remote server can be edited if you have sufficient permissions.
+
Le mode le plus simple à utiliser avec Komodo IDE consiste à utiliser simplement l'IDE comme débogueur pour parcourir le code. Le code sur le serveur distant peut être modifié si vous disposez des autorisations suffisantes.
  
https://docs.activestate.com/komodo/12/manual/debugger.html
+
https://docs.activestate.com/komodo/12/manual/debugger.html
  
This will enable us to work with one desktop and one server. See the section on debug proxy for multiple connections.
+
Cela nous permet de travailler avec un bureau et un serveur. Consultez la section sur le proxy de débogage pour plusieurs connexions.
  
====Server setup====
+
====Configuration du serveur====
  
From your installed Komodo directory we need to copy a set of files to the server.
+
À partir de votre répertoire Komodo installé, nous devons copier un ensemble de fichiers sur le serveur.
  
I actually copied the entire dbgp directory as there are other files in there that are useful including the debug proxy.
+
En fait, j'ai copié l'intégralité du répertoire dbgp car il contient d'autres fichiers utiles, notamment le proxy de débogage.
  
scp -r ~/komdoeditDirectory/lib/support/dbgp root@some.server://opt/
+
scp -r ~/komdoeditDirectory/lib/support/dbgp root@some.server://opt/
  
We should now have /opt/dbgp on the server
+
Nous devrions maintenant avoir /opt/dbgp sur le serveur
 
 
We now need to set some paths on the server:
 
  
 +
Nous devons maintenant définir des chemins sur le serveur :
 
  export PERL5LIB=/opt/dbgp/perllib:$PERL5LIB
 
  export PERL5LIB=/opt/dbgp/perllib:$PERL5LIB
 
  export PERLDB_OPTS=RemotePort=your.desktop.i.p:9020 async=1
 
  export PERLDB_OPTS=RemotePort=your.desktop.i.p:9020 async=1
  
If required you can also add a user identifier:
+
Si nécessaire, vous pouvez également ajouter un identifiant utilisateur :
  
 
  export DBGP_IDEKEY=jdoe
 
  export DBGP_IDEKEY=jdoe
  
Note: As with local debugging, the Break Now function is disabled by default. Setting async=1 breaks at the first line - see the docs for more information
+
Note : comme pour le débogage local, la fonction « Break Now » est désactivée par défaut. Le réglage de « async=1 » interrompt la lecture à la première ligne - consultez la documentation pour plus d'informations.
  
====Single machine setup====
+
====Configuration d'une seule machine====
  
On your desktop we need to set up the Listener for Komodo.
+
Sur votre bureau, nous devons configurer le « Listener » pour Komodo.
  
Edit/Preferences/Debugger/Connection
+
Edit/Preferences/Debugger/Connection
Set a specific port to 9020 (match the port above)
+
Définissez un port spécifique sur 9020 (correspondant au port ci-dessus)
Set a user name as above
+
Définissez un nom d'utilisateur comme ci-dessus
  
Now we need to start a program on the server. The debug code will then call Komodo.
+
Nous devons maintenant démarrer un programme sur le serveur. Le code de débogage appellera alors Komodo.
  
The following forms should work
+
Les formulaires suivants devraient fonctionner :
  
 
  perl -d myFile.pl
 
  perl -d myFile.pl
  
Add -d to the header of your file e.g.
+
Ajoutez -d à l'en-tête de votre fichier, par exemple :
  
 
  #!/usr/bin/perl -w -d
 
  #!/usr/bin/perl -w -d
  
Then do
+
Ensuite, faites :
  
 
  perl myFile.pl
 
  perl myFile.pl
  
Add -d to /sbin/e-smith/signal-event
+
Ajoutez -d à /sbin/e-smith/signal-event
  
Then do
+
Ensuite, faites :
  
 
  signal-event some-event
 
  signal-event some-event
  
You should get a popup from Komodo stating that a remote application has requested a debugger session. When you click yes you will get a second box stating that a mapping could not be opened. If we are just going to use Komodo as a debugger then we can answer no and you are then in debug mode allowing you to step through the code and view variables.
+
Vous devriez obtenir une fenêtre contextuelle de Komodo indiquant qu'une application distante a demandé une session de débogage. Lorsque vous cliquez sur « oui », vous obtenez une deuxième boîte indiquant qu'un mappage n'a pas pu être ouvert. Si nous allons simplement utiliser Komodo comme débogueur, nous pouvons répondre « non » et vous êtes alors en mode débogage vous permettant de parcourir le code et d'afficher les variables.
  
====Mapping for editing====
+
====Mappage pour l'édition====
  
Should you wish to actually edit code as well you will need to set up some form of file mapping between the URI that the debugger sends and your 'Server' setup in Komodo
+
Si vous souhaitez également éditer du code, vous devrez configurer une forme de mappage de fichiers entre l'URI envoyée par le débogueur et votre configuration « Serveur » dans Komodo.
  
Note that without some of the esmith libraries installed locally you will get some warnings about being unable to locate certain files but these can safely be ignored.
+
Notez que sans certaines des bibliothèques e-smith installées localement, vous recevrez des avertissements indiquant que vous ne parviendrez pas à localiser certains fichiers, mais ceux-ci peuvent être ignorés en toute sécurité.
  
In Komodo preferences you need to setup a Server/Remote Account for the remote server. e.g.
+
Dans les préférences de Komodo, vous devez configurer un compte serveur/distant pour le serveur distant, par exemple :
  
  Remote Account : Test_v10
+
  Compte distant : Test_v10
  Type: SCP
+
  Type : SCP
  Port: 2222
+
  Port : 2222
  Username: root
+
  Nom d'utilisateur : root
  Pass: somepass (or alternatively use SSH keys)
+
  Mot de passe : monmotdepasse (ou également utilisez des clés SSH)
  
You can then set up a mapping similar to this:
+
Vous pouvez ensuite configurer un mappage similaire à celui-ci :
  
 
  URI : file://v9-test/
 
  URI : file://v9-test/
 
  Maps To : scp://Test_v9/
 
  Maps To : scp://Test_v9/
  
Or
+
Ou :
  
 
  URI : file://v9-test/etc/e-smith
 
  URI : file://v9-test/etc/e-smith
 
  Maps To : scp://Test_v9/etc/e-smith
 
  Maps To : scp://Test_v9/etc/e-smith
  
You could be more specific about the directories should you require. Remember that you inherit the server permissions - you cannot save a file that is Read Only on the server !
+
Vous pouvez être plus précis sur les répertoires si vous le souhaitez. N'oubliez pas que vous héritez des autorisations du serveur : vous ne pouvez pas enregistrer un fichier en lecture seule sur le serveur !
 
 
====Local file mapping====
 
 
 
I seemed to have managed this using sshfs:
 
  
shfs -p 2222 root@192.168.10.199:/ ~/Mounts/somedirectory
+
====Mappage de fichiers locaux====
 +
J'ai réussi à le faire en utilisant sshfs :
  
You can then access the files normally and it is easy to map the remote to the 'local' files.
+
sshfs -p 2222 root@192.168.10.199:/ ~/Mounts/unRepertoire
  
====Tidying up afterwards====
+
Vous pouvez ensuite accéder aux fichiers normalement et il est facile de mapper la télécommande aux fichiers « locaux ».
  
Either reboot the server or use the following:
+
====Rangement a posteriori====
  
 +
Redémarrez le serveur ou utilisez la méthode suivante :
 
  export PERL5LIB=/usr/local/lib64/perl5:/usr/local/share/perl5:/usr/lib64/perl5/vendor_perl:/usr/share/perl5/vendor_perl
 
  export PERL5LIB=/usr/local/lib64/perl5:/usr/local/share/perl5:/usr/lib64/perl5/vendor_perl:/usr/share/perl5/vendor_perl
 
  export PERLDB_OPTS=
 
  export PERLDB_OPTS=
 
  export DBGP_IDEKEY=jdoe
 
  export DBGP_IDEKEY=jdoe
  
==== Perl CGI Debugging====
+
====Débogage CGI Perl====
  
[[Debugging CGI programs on live production servers can seriously impair performance. You have been warned !!]]
+
[[Le débogage des programmes CGI sur des serveurs de production en direct peut sérieusement nuire aux performances. Vous êtes prévenu(e) !!]]
  
Please see here for further details:
+
Veuillez consulter ici pour plus de détails :
  
 
http://docs.komodoide.com/Manual/debugperl#debugging-perl-komodo-ide-only_configuring-perl-for-cgi-debugging
 
http://docs.komodoide.com/Manual/debugperl#debugging-perl-komodo-ide-only_configuring-perl-for-cgi-debugging
  
You would need a custom httpd.conf fragment. I used 46PerlDebug with these options (configure to suit)
+
Vous aurez besoin d'un fragment httpd.conf personnalisé. J'ai utilisé 46PerlDebug avec ces options (configurer en conséquence) :
  
 
  SetEnv PERL5LIB "/opt/dbgp/perllib:$PERL5LIB"
 
  SetEnv PERL5LIB "/opt/dbgp/perllib:$PERL5LIB"
Line 191: Line 186:
 
  SetEnv DBGP_IDEKEY "user"
 
  SetEnv DBGP_IDEKEY "user"
  
You should now be able access your cgi-script and debug accordingly.
+
Vous devriez maintenant pouvoir accéder à votre script cgi et déboguer en conséquence.
  
However, having tried it you cannot use this on server-manager panels because perl is setuid.
+
Cependant, après l'avoir essayé, vous ne pouvez pas l'utiliser sur les panneaux du gestionnaire de serveur car Perl est « setuid ».
  
It could be used in other scenarios, but not server-manager.
+
Il pourrait être utilisé dans d'autres scénarios, mais pas dans le gestionnaire de serveur.
  
===Multiple machine debug proxy===
+
===Proxy de debogage multi-machines===
  
 
TBA
 
TBA
  
Notes are here:
+
Les notes sont ici :
 
http://docs.komodoide.com/Manual/debugger#debugging-programs-komodo-ide-only_remote-debugging_debugger-proxy
 
http://docs.komodoide.com/Manual/debugger#debugging-programs-komodo-ide-only_remote-debugging_debugger-proxy
  
===Perl with Visual Studio===
+
===Perl avec Visual Studio===
  
{{Note box|To be refined}}
+
{{Note box|type=Note : |à affiner.}}
  
Still working on this but we need Perl Language Server
+
Nous travaillons toujours sur ce sujet, mais nous avons besoin du serveur de langage Perl.
  
On your server:
+
Sur votre serveur :
  
 
   yum --enablerepo=* install gcc gcc-c++ perl-App-cpanminus perl-AnyEvent-AIO perl-Coro
 
   yum --enablerepo=* install gcc gcc-c++ perl-App-cpanminus perl-AnyEvent-AIO perl-Coro
Line 220: Line 215:
 
   cpanm Perl::LanguageServer
 
   cpanm Perl::LanguageServer
  
On your workstation:
+
Sur votre station de travail :
 
+
* configurez vos serveurs distants à l'aide des clés ssh dans .ssh/config ;
* Set up your remote servers using ssh keys in .ssh/config
+
* installez Visual Studio Code Remote Explorer ;
* Install Visual Studio Code Remote Explorer
+
* redémarrez ;
* Restart
+
* accédez à Remote Explorer et vous devriez voir votre liste de serveurs ;
* Go to Remote Explorer and you should see your server list
+
* ouvrez dans la fenêtre actuelle ou une nouvelle ;
* Open in Current or New window
+
* sélectionnez la plateforme et laissez VS Code s'installer ;
* Select the platform and let VS Code install itself
+
* accédez à l'explorateur de fichiers ;
* Go to File explorer
+
* ouvrir le dossier ;
* Open Folder
+
* il vous suggérera d'ouvrir dans /root/ mais je trouve plus facile d'ouvrir dans / ;
* It will suggests opening in /root/ but I find it easier to open in /
+
* cliquez sur OK et vos dossiers apparaîtront à gauche ;
* Click OK and your folders will appear left
+
* accédez à votre fichier et ouvrez-le ;
* Go to your file and open it
+
* définissez un point d'arrêt en haut ;
* Set a break point near the top
+
* accédez maintenant à Debug, Ajoutez une Configuration et acceptez les valeurs par défaut ;
* Now go to Debug, Add a Configuration, and accept the defaults
+
* exécutez maintenant Debug et vous devriez voir le code s'arrêter à l'un de vos points d'arrêt.
* Now run the Debug and you should see the code stop at one of your break points
 
  
 +
Vous pouvez maintenant parcourir votre code.
  
You can now step through your code.
+
===Débogage PHP à distance===
 +
Vous pouvez déboger sur votre station de travail locale mais il est extrèmememnt utile de pouvoir déboger directement dans l'environnement du serveur.
 +
Vous pouvez avoir une version de PHP installée sur votre ordinateur mais en avoir une différente qui tourne sur le serveur et vous pouvez avoir une configuration différente sur le serveur.
  
===PHP remote debugging===
+
D'abord, vous avez besoin d'installer les paquets xdebug, par exemple :
  
You can debug on your local workstation but it is extremely useful to be able to debug direct on the server environment.
+
{{Note box|type=Note : |Xdebug 3 n'est pas disponible pour les versions de PHP inférieures à 7.2. Vous aurez besoin de php54-php-pecl-xdebug.}}
You may have one PHP version installed on your desktop but be running a different one on the server, and you may have a different server setup.
 
 
 
First you need to install the xdebug packages eg:
 
 
 
{{Note box|Xdebug 3 is not available for PHP versions less than 7.2 You will need php54-php-pecl-xdebug}}
 
  
 
  yum install php74-php-pecl-xdebug3
 
  yum install php74-php-pecl-xdebug3
 
  yum install php80-php-pecl-xdebug3
 
  yum install php80-php-pecl-xdebug3
  
Or
+
Oo :
  
 
  yum install php*php-pecl-xdebug3
 
  yum install php*php-pecl-xdebug3
  
Next you need a small template fragment to enable remote debugging.
+
Ensuite, vous avez besoin d’un petit fragment de modèle pour permettre le débogage à distance.
  
 
=====Xdebug 2=====
 
=====Xdebug 2=====
Line 263: Line 255:
 
  nano /etc/e-smith/templates-custom/etc/php.ini/90XdebugSettings  
 
  nano /etc/e-smith/templates-custom/etc/php.ini/90XdebugSettings  
  
Add this:
+
Ajouter ceci :
  
 
  [Debugger]
 
  [Debugger]
Line 278: Line 270:
 
=====Xdebug 3 =====
 
=====Xdebug 3 =====
  
New syntax.
+
Nouvelle syntaxe.
  
 
https://xdebug.org/docs/upgrade_guide
 
https://xdebug.org/docs/upgrade_guide
Line 295: Line 287:
  
  
Expand templates and restart services:
+
Expandre les modèles et redémarrer les services :
  
 
  signal-event webapps-update
 
  signal-event webapps-update
  
We should see Xdebug here
+
Nous devrions voir Xdebug ici :
  
 
  php74 -v
 
  php74 -v
Line 308: Line 300:
 
     with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans
 
     with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans
  
Or like this:
+
Ou comme cela :
  
 
  php80 -v
 
  php80 -v
PHP 8.0.19 (cli) (built: May 10 2022 08:07:35) ( NTS gcc x86_64 )
+
PHP 8.0.19 (cli) (built: May 10 2022 08:07:35) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
+
Copyright (c) The PHP Group
Zend Engine v4.0.19, Copyright (c) Zend Technologies
+
Zend Engine v4.0.19, Copyright (c) Zend Technologies
 
     with Zend OPcache v8.0.19, Copyright (c), by Zend Technologies
 
     with Zend OPcache v8.0.19, Copyright (c), by Zend Technologies
 
     with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
 
     with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans
  
====Komodo IDE====
+
====IDE Komodo====
 
+
Nous pouvons obtenir le proxy de débogage à partir de l'installation, le déplacer vers le serveur, puis exécuter à partir de là :
We can obtain the debug proxy from the installation, and move it to the server and then execute from there:
 
  
 
  python /root/dbgp/bin/pydbgpproxy -d 127.0.0.1:9001 -i 192.168.10.1:9003
 
  python /root/dbgp/bin/pydbgpproxy -d 127.0.0.1:9001 -i 192.168.10.1:9003
  
Or alternatively grab the lastest xdebug client here:
+
Ou bien, récupérez le dernier client xdebug ici :
  
 
  mkdir /root/xdbg-proxy
 
  mkdir /root/xdbg-proxy
Line 331: Line 322:
 
  ./dbgpProxy -s 127.0.0.1:9001 -i 192.168.10.1:9003
 
  ./dbgpProxy -s 127.0.0.1:9001 -i 192.168.10.1:9003
  
In Komodo Go to Preferences, Debugger, Connections
+
Dans Komodo, allez à Preferences, Debugger, Connections
  
Komodo should listen on:
+
Komodo devrait être écouté sur « System provide port ».
System provide port
 
  
Check 'I am running a debugger proxy'
+
Vérifiez 'I am running a debugger proxy'
Listener address: IP.of.your.server:9003
+
Adresse découte : IP.de.votre.serveur:9003
Proxy key: individual key name for this desktop
+
Clé proxy : nom de la clé individuelle pour cet ordinateur
  
Save and check that it connected to the debugger.
+
Enregistrez et vérifiez qu'il est connecté au débogeur.
  
Now to debug a file:
+
Maintenant pour déboguer un fichier :
  
https://your.server.ip/index.php?XDEBUG_SESSION_START=mydesktopkey
+
https://ip.de.votre.serveur/index.php?XDEBUG_SESSION_START=mydesktopkey
  
Or
+
Ou :
  
https://your.server.ip/index.php?somevalue=3&XDEBUG_SESSION_START=mydesktopkey
+
https://ip.de.votre.serveur/index.php?somevalue=3&XDEBUG_SESSION_START=mydesktopkey
  
 
====Visual Studio/VS Codium ====
 
====Visual Studio/VS Codium ====
  
Sample launch.json
+
Exemple launch.json
  
Note for newer versions of Xdebug the default port is now 9003
+
Remarque pour les versions plus récentes de Xdebug, le port par défaut est désormais 9003.
Pay careful attention to the path mapping,. This has to be absolutely correct or it will not work.
+
Faites très attention au mappage des chemins. Cela doit être absolument correct sinon cela ne fonctionnera pas.
  
 
  {
 
  {
Line 382: Line 372:
 
  }
 
  }
  
Now you can run start the PHP debugger in Codium so it connects the to the debug server, and then trigger it with a URL like this:
+
Vous pouvez maintenant exécuter le débogueur PHP dans Codium afin qu'il se connecte au serveur de débogage, puis le déclencher avec une URL comme celle-ci :
  
 
https://my.SME.Server/testbay/phptestcode/myTestPhpFile.php?XDEBUG_SESSION_START=mycodiumkey
 
https://my.SME.Server/testbay/phptestcode/myTestPhpFile.php?XDEBUG_SESSION_START=mycodiumkey
  
===Editors and IDEs===
+
===Editeurs et IDEs===
  
Some Open Source Editors/IDEs
+
Quelques éditeurs « Open Source » / IDEs
  
These all allow remote debugging.
+
Ils permettent tous le débogage à distance.
  
 
Komodo-IDE https://www.activestate.com/products/komodo-ide
 
Komodo-IDE https://www.activestate.com/products/komodo-ide
Line 402: Line 392:
 
Codium https://itsfoss.com/vscodium/ - Use PHP Debug - felixfbecker.php-debug
 
Codium https://itsfoss.com/vscodium/ - Use PHP Debug - felixfbecker.php-debug
 
<br>
 
<br>
For Codium I can't see a remote Perl debugger as yet.
+
Pour Codium, je ne vois pas encore de débogueur Perl distant.
  
 
----
 
----
[[Category:Howto]]
+
[[Category:Howto/fr]]
 
[[Category:Developer]]
 
[[Category:Developer]]
 
[[Category:SME Server Development Framework]]
 
[[Category:SME Server Development Framework]]
 
[[Category:Development Tools]]
 
[[Category:Development Tools]]

Latest revision as of 17:05, 18 August 2024


Débogage du serveur

Un problème souvent rencontré par les nouveaux développeurs est le débogage du code Perl sur votre serveur SME.

Il existe plusieurs façons de procéder, à la fois localement et à distance.

Activer le débogage du modèle

Je suis tombé sur cela dans le fichier templates.pm

config set processtemplate Debug yes

Cela ajoutera quelques lignes de débogage à /var/log/messages vous montrant la progression de l'extension du modèle.

Pour désactiver, définissez la clé sur « no » ou supprimez-la.

Routines de base de données intégrées

Vous pouvez également utiliser quelques routines de db.pm

=item B<db_print>
 db_print(\%config);
 db_print(\%config, $key);

Imprime les clés et leurs valeurs brutes dans la base de données %config. Si $key est fourni, il imprime la $key et sa valeur brute. Si aucune $key n'est fournie, il imprime toutes les clés et leurs valeurs brutes.

=item B<db_show>
 db_show(\%config);
 db_show(\%config, $key);

Imprime les clés et leurs valeurs dans un format lisible par l'homme. Si $key est fourni, il imprime la $key, le type et les propriétés de cette $key. Sinon, il imprime la clé, le type et les propriétés de toutes les clés.

=item B<db_print_type>
 db_print_type(\%config);
 db_print_type(\%config, $key);

Imprime les clés et leurs types dans la base de données %config. Si $key est fourni, il imprime uniquement cette $key et son type. Sinon, il imprime toutes les clés et leurs types.

=item B<db_print_prop>
 db_print_prop(\%config, $key);
 db_print_prop(\%config, $key, $property);

Imprime les propriétés (ou une seule $property) de la $key donnée dans le %config.

En local, en utilisant perl -d

Il existe un certain nombre de tutoriels en ligne.

Pour commencer, utilisez :

perl -d myFile.pl

Il existe ensuite un certain nombre d'options que vous pouvez utiliser pour contrôler le débogueur :

l 10 - list line 10
l get_pattern - find lines matching 'pattern'
b 22 - set breakpoint at line 22
s - step forward a line including all subroutines
n - step forward a line but jump through subroutines
c - continue to next break point
c 47 - continue to line 47
p $variable - print variable
q - quit

Débogage à distance à l'aide d'un environnement de développement (IDE)

J'utilise Komodo IDE grâce à une licence pour développeurs « Open Source » de Activestate.

Vous pouvez désormais obtenir l'application gratuitement ici, mais vous avez besoin d'un compte gratuit pour l'utiliser :

https://www.activestate.com/products/komodo-ide/download-ide/

Le mode le plus simple à utiliser avec Komodo IDE consiste à utiliser simplement l'IDE comme débogueur pour parcourir le code. Le code sur le serveur distant peut être modifié si vous disposez des autorisations suffisantes.

https://docs.activestate.com/komodo/12/manual/debugger.html

Cela nous permet de travailler avec un bureau et un serveur. Consultez la section sur le proxy de débogage pour plusieurs connexions.

Configuration du serveur

À partir de votre répertoire Komodo installé, nous devons copier un ensemble de fichiers sur le serveur.

En fait, j'ai copié l'intégralité du répertoire dbgp car il contient d'autres fichiers utiles, notamment le proxy de débogage.

scp -r ~/komdoeditDirectory/lib/support/dbgp root@some.server://opt/

Nous devrions maintenant avoir /opt/dbgp sur le serveur

Nous devons maintenant définir des chemins sur le serveur :

export PERL5LIB=/opt/dbgp/perllib:$PERL5LIB
export PERLDB_OPTS=RemotePort=your.desktop.i.p:9020 async=1

Si nécessaire, vous pouvez également ajouter un identifiant utilisateur :

export DBGP_IDEKEY=jdoe

Note : comme pour le débogage local, la fonction « Break Now » est désactivée par défaut. Le réglage de « async=1 » interrompt la lecture à la première ligne - consultez la documentation pour plus d'informations.

Configuration d'une seule machine

Sur votre bureau, nous devons configurer le « Listener » pour Komodo.

Edit/Preferences/Debugger/Connection Définissez un port spécifique sur 9020 (correspondant au port ci-dessus) Définissez un nom d'utilisateur comme ci-dessus

Nous devons maintenant démarrer un programme sur le serveur. Le code de débogage appellera alors Komodo.

Les formulaires suivants devraient fonctionner :

perl -d myFile.pl

Ajoutez -d à l'en-tête de votre fichier, par exemple :

#!/usr/bin/perl -w -d

Ensuite, faites :

perl myFile.pl

Ajoutez -d à /sbin/e-smith/signal-event

Ensuite, faites :

signal-event some-event

Vous devriez obtenir une fenêtre contextuelle de Komodo indiquant qu'une application distante a demandé une session de débogage. Lorsque vous cliquez sur « oui », vous obtenez une deuxième boîte indiquant qu'un mappage n'a pas pu être ouvert. Si nous allons simplement utiliser Komodo comme débogueur, nous pouvons répondre « non » et vous êtes alors en mode débogage vous permettant de parcourir le code et d'afficher les variables.

Mappage pour l'édition

Si vous souhaitez également éditer du code, vous devrez configurer une forme de mappage de fichiers entre l'URI envoyée par le débogueur et votre configuration « Serveur » dans Komodo.

Notez que sans certaines des bibliothèques e-smith installées localement, vous recevrez des avertissements indiquant que vous ne parviendrez pas à localiser certains fichiers, mais ceux-ci peuvent être ignorés en toute sécurité.

Dans les préférences de Komodo, vous devez configurer un compte serveur/distant pour le serveur distant, par exemple :

Compte distant : Test_v10
Type : SCP
Port : 2222
Nom d'utilisateur : root
Mot de passe : monmotdepasse (ou également utilisez des clés SSH)

Vous pouvez ensuite configurer un mappage similaire à celui-ci :

URI : file://v9-test/
Maps To : scp://Test_v9/

Ou :

URI : file://v9-test/etc/e-smith
Maps To : scp://Test_v9/etc/e-smith

Vous pouvez être plus précis sur les répertoires si vous le souhaitez. N'oubliez pas que vous héritez des autorisations du serveur : vous ne pouvez pas enregistrer un fichier en lecture seule sur le serveur !

Mappage de fichiers locaux

J'ai réussi à le faire en utilisant sshfs :

sshfs -p 2222 root@192.168.10.199:/ ~/Mounts/unRepertoire

Vous pouvez ensuite accéder aux fichiers normalement et il est facile de mapper la télécommande aux fichiers « locaux ».

Rangement a posteriori

Redémarrez le serveur ou utilisez la méthode suivante :

export PERL5LIB=/usr/local/lib64/perl5:/usr/local/share/perl5:/usr/lib64/perl5/vendor_perl:/usr/share/perl5/vendor_perl
export PERLDB_OPTS=
export DBGP_IDEKEY=jdoe

Débogage CGI Perl

Le débogage des programmes CGI sur des serveurs de production en direct peut sérieusement nuire aux performances. Vous êtes prévenu(e) !!

Veuillez consulter ici pour plus de détails :

http://docs.komodoide.com/Manual/debugperl#debugging-perl-komodo-ide-only_configuring-perl-for-cgi-debugging

Vous aurez besoin d'un fragment httpd.conf personnalisé. J'ai utilisé 46PerlDebug avec ces options (configurer en conséquence) :

SetEnv PERL5LIB "/opt/dbgp/perllib:$PERL5LIB"
SetEnv PERLDB_OPTS "RemotePort=192.168.x.x async=1"
SetEnv DBGP_IDEKEY "user"

Vous devriez maintenant pouvoir accéder à votre script cgi et déboguer en conséquence.

Cependant, après l'avoir essayé, vous ne pouvez pas l'utiliser sur les panneaux du gestionnaire de serveur car Perl est « setuid ».

Il pourrait être utilisé dans d'autres scénarios, mais pas dans le gestionnaire de serveur.

Proxy de debogage multi-machines

TBA

Les notes sont ici : http://docs.komodoide.com/Manual/debugger#debugging-programs-komodo-ide-only_remote-debugging_debugger-proxy

Perl avec Visual Studio

Important.png Note :
à affiner.


Nous travaillons toujours sur ce sujet, mais nous avons besoin du serveur de langage Perl.

Sur votre serveur :

 yum --enablerepo=* install gcc gcc-c++ perl-App-cpanminus perl-AnyEvent-AIO perl-Coro
 cpanm Class::Refresh
 cpanm ExtUtils::CBuilder
 cpanm Compiler::Lexer
 cpanm Hash::SafeKeys
 cpanm Perl::LanguageServer

Sur votre station de travail :

  • configurez vos serveurs distants à l'aide des clés ssh dans .ssh/config ;
  • installez Visual Studio Code Remote Explorer ;
  • redémarrez ;
  • accédez à Remote Explorer et vous devriez voir votre liste de serveurs ;
  • ouvrez dans la fenêtre actuelle ou une nouvelle ;
  • sélectionnez la plateforme et laissez VS Code s'installer ;
  • accédez à l'explorateur de fichiers ;
  • ouvrir le dossier ;
  • il vous suggérera d'ouvrir dans /root/ mais je trouve plus facile d'ouvrir dans / ;
  • cliquez sur OK et vos dossiers apparaîtront à gauche ;
  • accédez à votre fichier et ouvrez-le ;
  • définissez un point d'arrêt en haut ;
  • accédez maintenant à Debug, Ajoutez une Configuration et acceptez les valeurs par défaut ;
  • exécutez maintenant Debug et vous devriez voir le code s'arrêter à l'un de vos points d'arrêt.

Vous pouvez maintenant parcourir votre code.

Débogage PHP à distance

Vous pouvez déboger sur votre station de travail locale mais il est extrèmememnt utile de pouvoir déboger directement dans l'environnement du serveur. Vous pouvez avoir une version de PHP installée sur votre ordinateur mais en avoir une différente qui tourne sur le serveur et vous pouvez avoir une configuration différente sur le serveur.

D'abord, vous avez besoin d'installer les paquets xdebug, par exemple :


Important.png Note :
Xdebug 3 n'est pas disponible pour les versions de PHP inférieures à 7.2. Vous aurez besoin de php54-php-pecl-xdebug.


yum install php74-php-pecl-xdebug3
yum install php80-php-pecl-xdebug3

Oo :

yum install php*php-pecl-xdebug3

Ensuite, vous avez besoin d’un petit fragment de modèle pour permettre le débogage à distance.

Xdebug 2
mkdir -p /etc/e-smith/templates-custom/etc/php.ini
nano /etc/e-smith/templates-custom/etc/php.ini/90XdebugSettings 

Ajouter ceci :

[Debugger]
; /etc/e-smith/templates-custom/etc/php.ini
xdebug.remote_enable                   = true
xdebug.remote_host                     = 127.0.0.1
xdebug.remote_port                     = 9001
xdebug.remote_handler                  = dbgp
xdebug.remote_log                      = /var/log/xdebug.log
xdebug.remote_mode                     = req
xdebug.max_nesting_level               = 5000


Xdebug 3

Nouvelle syntaxe.

https://xdebug.org/docs/upgrade_guide https://xdebug.org/docs/all_settings

nano /etc/e-smith/templates-custom/etc/php.ini/90XdebugSettings

[Debugger]
xdebug.start_with_request               = yes
xdebug.discover_client_host             = true
xdebug.client_host                      = localhost
xdebug.client_port                      = 9003
xdebug.idekey                           = users
xdebug.mode                             = debug
xdebug.log                              = /var/log/xdebug.log


Expandre les modèles et redémarrer les services :

signal-event webapps-update

Nous devrions voir Xdebug ici :

php74 -v
PHP 7.4.28 (cli) (built: Feb 15 2022 13:23:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
   with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies
   with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans

Ou comme cela :

php80 -v
PHP 8.0.19 (cli) (built: May 10 2022 08:07:35) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.19, Copyright (c) Zend Technologies
   with Zend OPcache v8.0.19, Copyright (c), by Zend Technologies
   with Xdebug v3.1.5, Copyright (c) 2002-2022, by Derick Rethans

IDE Komodo

Nous pouvons obtenir le proxy de débogage à partir de l'installation, le déplacer vers le serveur, puis exécuter à partir de là :

python /root/dbgp/bin/pydbgpproxy -d 127.0.0.1:9001 -i 192.168.10.1:9003

Ou bien, récupérez le dernier client xdebug ici :

mkdir /root/xdbg-proxy
cd /root/xdbg-proxy
curl https://xdebug.org/files/binaries/dbgpProxy -o dbgpProxy
chmod 0700 dbgpProxy
./dbgpProxy -s 127.0.0.1:9001 -i 192.168.10.1:9003

Dans Komodo, allez à Preferences, Debugger, Connections

Komodo devrait être écouté sur « System provide port ».

Vérifiez 'I am running a debugger proxy' Adresse découte : IP.de.votre.serveur:9003 Clé proxy : nom de la clé individuelle pour cet ordinateur

Enregistrez et vérifiez qu'il est connecté au débogeur.

Maintenant pour déboguer un fichier :

https://ip.de.votre.serveur/index.php?XDEBUG_SESSION_START=mydesktopkey

Ou :

https://ip.de.votre.serveur/index.php?somevalue=3&XDEBUG_SESSION_START=mydesktopkey

Visual Studio/VS Codium

Exemple launch.json

Remarque pour les versions plus récentes de Xdebug, le port par défaut est désormais 9003. Faites très attention au mappage des chemins. Cela doit être absolument correct sinon cela ne fonctionnera pas.

{
   // Use IntelliSense to learn about possible attributes.
   // Hover to view descriptions of existing attributes.
   // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
   "version": "0.2.0",
   "configurations": [
       {
           "name"        : "vscphpdebug",
           "type"        : "php",
           "request"     : "launch",
            "stopOnEntry" : false,
           "proxy": {
           "enable" : true,
           "host" : "my.server.ip",
           "key" : "users", // As set in the server above
           "port": 9003,
           "allowMultipleSessions" : true
           },
           "pathMappings": {
           "/home/e-smith/files/ibays/testbay/html/phptestcode": "${workspaceFolder}"
           },
       },
   ]
}

Vous pouvez maintenant exécuter le débogueur PHP dans Codium afin qu'il se connecte au serveur de débogage, puis le déclencher avec une URL comme celle-ci :

https://my.SME.Server/testbay/phptestcode/myTestPhpFile.php?XDEBUG_SESSION_START=mycodiumkey

Editeurs et IDEs

Quelques éditeurs « Open Source » / IDEs

Ils permettent tous le débogage à distance.

Komodo-IDE https://www.activestate.com/products/komodo-ide

Komodo Debug tools: https://code.activestate.com/komodo/remotedebugging/

Eclipse https://www.eclipse.org/

Netbeans https://netbeans.org/

Codium https://itsfoss.com/vscodium/ - Use PHP Debug - felixfbecker.php-debug
Pour Codium, je ne vois pas encore de débogueur Perl distant.