How to debug your code/fr: Difference between revisions

From Joomla! Documentation

Created page with "Comment déboguer votre code"
 
Created page with "Ce plugin fournit des informations importantes pouvant vous aider à déboguer et à améliorer les performances de votre composant."
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<noinclude><languages /></noinclude>
<noinclude><languages /></noinclude>
==The Easy Way 1 (echo)==
==La méthode facile (echo)==
The simplest way to see what is going on inside your code is to temporarily add echo statements for variables to show their values on the screen. For example, say you want to know what the value of some variables are when $i is "5". You could use code like this:
Le moyen le plus simple de voir ce qui se passe dans votre code consiste à ajouter temporairement des instructions echo pour que les variables affichent leurs valeurs à l'écran. Par exemple, supposons que vous vouliez connaître la valeur de certaines variables lorsque $i est "5". Vous pouvez utiliser un code comme ceci:


<source lang="PHP">for ( $i = 0; $i < 10; $i++ ) {
<source lang="PHP">for ( $i = 0; $i < 10; $i++ ) {
Line 10: Line 10:
}</source>
}</source>


This works for simple situations. However, if you are planning on doing a lot of Joomla! development, it is worth the effort to install and learn an integrated development environment (IDE) that includes a real PHP debugger.
Cela fonctionne pour des situations simples. Cependant, si vous envisagez de faire beaucoup développement pour Joomla!, il vaut la peine de s’efforcer d’installer et d’apprendre un environnement de développement intégré (IDE) comprenant un véritable débogueur PHP.


==The Easy Way 2 (Joomla message)==
==La méthode facile n° 2 (message Joomla)==
Your code won't always display simple echo statements. In that case you can try this alternative, still easy way:
Votre code n'affichera pas toujours de simples déclarations echo. Dans ce cas, vous pouvez essayer cette alternative, toujours simple:
<source lang="PHP">JFactory::getApplication()->enqueueMessage('Some debug string(s)');</source>
<source lang="PHP">JFactory::getApplication()->enqueueMessage('Some debug string(s)');</source>
You can choose different [[Display_error_messages_and_notices|message types]] which corresponds to grouping with different styles (colors mainly).
Vous pouvez choisir différents [[Display_error_messages_and_notices|types de message]] qui correspondent à un regroupement avec différents styles (couleurs principalement).


==Joomla Logging==
==Journalisation Joomla==
Joomla allows you to log messages to a log file, and optionally also display these on the web page (in the same way as enqueueMessage above) and on the Joomla Debug Console (described below).
Joomla vous permet de consigner des messages dans un fichier journal, et éventuellement de les afficher également sur la page Web (de la même manière que enqueueMessage ci-dessus) et sur la console Joomla Debug (décrite ci-dessous).


To log a message in the log file:
Pour consigner un message dans le fichier journal:
<source lang="PHP">
<source lang="PHP">
JLog::add('my error message', JLog::ERROR);
JLog::add('my error message', JLog::ERROR);
</source>
</source>
To log a message and also display it on the screen:
Pour enregistrer un message et l'afficher à l'écran:
<source lang="PHP">
<source lang="PHP">
JLog::add('my error message', JLog::ERROR, 'jerror');
JLog::add('my error message', JLog::ERROR, 'jerror');
</source>
</source>
The logging to the log file and to the Debug Console is controlled via the settings of the System Debug plugin. To understand how this works, and the relevant settings of the System-Debug plugin, read the Joomla documentation page on [[S:MyLanguage/Using JLog|Using JLog]].
La connexion au fichier journal et à la console de débogage est contrôlée via les paramètres du plug-in System - Debug. Pour comprendre comment cela fonctionne et les paramètres appropriés du plug-in System-Debug, lisez la page de documentation de Joomla sur [[S:MyLanguage/Using JLog|Utiliser JLog]].


==Using an IDE==
==Utiliser un IDE==
Check this 3 minutes video that shows [http://www.youtube.com/watch?v=sP4dHAuq2kc&feature=youtu.be how you can debug your code with a Browser and an IDE]
Regardez cette vidéo de 3 minutes qui montre [http://www.youtube.com/watch?v=sP4dHAuq2kc&feature=youtu.be comment vous pouvez déboguer votre code avec un navigateur et un IDE]


{{#ev:youtube|sP4dHAuq2kc}}
{{#ev:youtube|sP4dHAuq2kc}}
Line 38: Line 38:


{{#widget:YouTube|id=MiIEF8-XAkc}}
{{#widget:YouTube|id=MiIEF8-XAkc}}
==Using the PHP Expert editor==
==Utiliser l'éditeur PHP Expert==
Another option is the PHP Expert editor with an installed extension for debugging. Add the following lines to the php.ini file:
Une autre option est l'éditeur PHP Expert avec une extension installée pour le débogage. Ajoutez les lignes suivantes au fichier php.ini:


  extension=php_dbg.dll
  extension=php_dbg.dll
Line 46: Line 46:
  debugger.profiler_enabled=off
  debugger.profiler_enabled=off


It is best to set profiler_enable to "off". Then you need to set options in the Run/Options menu to use HTTP-server and the directory in which your script is located.
Il est préférable de définir profiler_enable sur "off". Ensuite, vous devez définir des options dans le menu Exécuter/Options pour utiliser le serveur HTTP et le répertoire dans lequel se trouve votre script.
If all options are correct, you may run your script in debug mode by clicking on the Debug button (F8)
Si toutes les options sont correctes, vous pouvez exécuter votre script en mode débogage en cliquant sur le bouton Déboguer (F8).


==J!Dump==
==J!Dump==
An often handy extension that can be found in the JED is the J!Dump extension that will allow you to dump variable, stack traces, and system information into a popup window at run time. This extension works like the PHP command `var_dump` but formats the output in a much more readable fashion.
Une extension souvent utile que vous pouvez trouver dans le JED est l'extension J! Dump qui vous permettra de d'afficher les variables, les traces de pile et les informations système dans une fenêtre contextuelle au moment de l'exécution. Cette extension fonctionne comme la commande PHP `var_dump` mais formate la sortie de manière beaucoup plus lisible.


==Joomla Debug Console==
==Joomla Debug Console==
The Debug Console can be enabled from the Joomla! Global Configuration, System tab, by setting the Debug System option to Yes. Once enabled the output of the debug plugin will be displayed at the bottom of each page.  
La console de débogage peut être activée à partir de la Configuration Globale de Joomla!, onglet Système, en définissant l'option Système de débogage sur Oui. Une fois activé, la sortie du plugin de débogage sera affichée au bas de chaque page.  
[[File:Jdebug-module-en.jpg|The JDebug Plugin output]]
[[File:Jdebug-module-en.jpg|La sortie du Plugin JDebug]]


Setting this Debug System option also sets the global variable JDEBUG to true, so that you can control whether to log messages by testing this variable:
La définition de cette option de système de débogage définit également la variable globale JDEBUG sur true afin que vous puissiez contrôler si les messages doivent être consignés en testant cette variable:
<source lang="PHP">
<source lang="PHP">
if(JDEBUG)
if(JDEBUG)
Line 65: Line 65:
</source>
</source>


This plugin provides important information that can assist in debugging and improving the performance of your component.
Ce plugin fournit des informations importantes pouvant vous aider à déboguer et à améliorer les performances de votre composant.


===Session Information===
===Informations de session===


This section displays state variables which are stored in the Session data to enable them to be 'remembered' across HTTP requests. Examples include variables defining the current search filters the user has defined, the pagination point in a list of records, etc.
This section displays state variables which are stored in the Session data to enable them to be 'remembered' across HTTP requests. Examples include variables defining the current search filters the user has defined, the pagination point in a list of records, etc.
Line 73: Line 73:
[[File:session-en.jpg]]
[[File:session-en.jpg]]


===Profile Information===
===Informations de profil===


The Profile Information tab from the debug plugin provides information about the time and memory taken to render the page based on each of the application events.  This can help to identify areas outside of network speed that are contributing to long page load times high server memory usage.
The Profile Information tab from the debug plugin provides information about the time and memory taken to render the page based on each of the application events.  This can help to identify areas outside of network speed that are contributing to long page load times high server memory usage.
Line 84: Line 84:


[[File:Jdebug-query-en.jpg]]
[[File:Jdebug-query-en.jpg]]
==JFirePHP==
Use the Joomla [http://extensions.joomla.org/extensions/miscellaneous/development/11343 <noinclude>JFirePHP extension</noinclude>].


==Komodo IDE==
==Komodo IDE==


[[S:MyLanguage/Debugging Joomla with Komodo IDE|Debugging Joomla with Komodo IDE]]
[[S:MyLanguage/Debugging Joomla with Komodo IDE|Debugging Joomla with Komodo IDE]]


<noinclude>
<noinclude>

Latest revision as of 01:09, 25 September 2019

La méthode facile (echo)

Le moyen le plus simple de voir ce qui se passe dans votre code consiste à ajouter temporairement des instructions echo pour que les variables affichent leurs valeurs à l'écran. Par exemple, supposons que vous vouliez connaître la valeur de certaines variables lorsque $i est "5". Vous pouvez utiliser un code comme ceci:

for ( $i = 0; $i < 10; $i++ ) {
	if ( $i == 5 ) {
		echo '$i=' . $i; 
                // other echo statements 
	}
}

Cela fonctionne pour des situations simples. Cependant, si vous envisagez de faire beaucoup développement pour Joomla!, il vaut la peine de s’efforcer d’installer et d’apprendre un environnement de développement intégré (IDE) comprenant un véritable débogueur PHP.

La méthode facile n° 2 (message Joomla)

Votre code n'affichera pas toujours de simples déclarations echo. Dans ce cas, vous pouvez essayer cette alternative, toujours simple:

JFactory::getApplication()->enqueueMessage('Some debug string(s)');

Vous pouvez choisir différents types de message qui correspondent à un regroupement avec différents styles (couleurs principalement).

Journalisation Joomla

Joomla vous permet de consigner des messages dans un fichier journal, et éventuellement de les afficher également sur la page Web (de la même manière que enqueueMessage ci-dessus) et sur la console Joomla Debug (décrite ci-dessous).

Pour consigner un message dans le fichier journal:

JLog::add('my error message', JLog::ERROR);

Pour enregistrer un message et l'afficher à l'écran:

JLog::add('my error message', JLog::ERROR, 'jerror');

La connexion au fichier journal et à la console de débogage est contrôlée via les paramètres du plug-in System - Debug. Pour comprendre comment cela fonctionne et les paramètres appropriés du plug-in System-Debug, lisez la page de documentation de Joomla sur Utiliser JLog.

Utiliser un IDE

Regardez cette vidéo de 3 minutes qui montre comment vous pouvez déboguer votre code avec un navigateur et un IDE

Many Joomla! developers use the Eclipse IDE. This is free and includes a debugger. Instructions for installing it are available at Setting up your workstation for Joomla! development, or you can watch this video on setting up Eclipse and Xdebug:

Utiliser l'éditeur PHP Expert

Une autre option est l'éditeur PHP Expert avec une extension installée pour le débogage. Ajoutez les lignes suivantes au fichier php.ini:

extension=php_dbg.dll
[Debugger]
debugger.enabled=on
debugger.profiler_enabled=off

Il est préférable de définir profiler_enable sur "off". Ensuite, vous devez définir des options dans le menu Exécuter/Options pour utiliser le serveur HTTP et le répertoire dans lequel se trouve votre script. Si toutes les options sont correctes, vous pouvez exécuter votre script en mode débogage en cliquant sur le bouton Déboguer (F8).

J!Dump

Une extension souvent utile que vous pouvez trouver dans le JED est l'extension J! Dump qui vous permettra de d'afficher les variables, les traces de pile et les informations système dans une fenêtre contextuelle au moment de l'exécution. Cette extension fonctionne comme la commande PHP `var_dump` mais formate la sortie de manière beaucoup plus lisible.

Joomla Debug Console

La console de débogage peut être activée à partir de la Configuration Globale de Joomla!, onglet Système, en définissant l'option Système de débogage sur Oui. Une fois activé, la sortie du plugin de débogage sera affichée au bas de chaque page. La sortie du Plugin JDebug

La définition de cette option de système de débogage définit également la variable globale JDEBUG sur true afin que vous puissiez contrôler si les messages doivent être consignés en testant cette variable:

if(JDEBUG)
{
    //whatever debugging code you want to run, eg
    JLog::add('my debug message', JLog::DEBUG, 'my-debug-category');
}

Ce plugin fournit des informations importantes pouvant vous aider à déboguer et à améliorer les performances de votre composant.

Informations de session

This section displays state variables which are stored in the Session data to enable them to be 'remembered' across HTTP requests. Examples include variables defining the current search filters the user has defined, the pagination point in a list of records, etc.

Informations de profil

The Profile Information tab from the debug plugin provides information about the time and memory taken to render the page based on each of the application events. This can help to identify areas outside of network speed that are contributing to long page load times high server memory usage.

JDEBUG Profile

Database Queries

One of the most useful tabs is the Database Queries tab. This will provide a log of all queries that have been executed while loading the page and identify both the time taken to execute the query and whether duplicate queries have occurred. This is particularly useful when debugging performance problems on larger components as duplicate queries are often a contributing factor.

Komodo IDE

Debugging Joomla with Komodo IDE