Maison  >  Article  >  développement back-end  >  Que faire si une erreur de segmentation se produit dans l'extension php

Que faire si une erreur de segmentation se produit dans l'extension php

藏色散人
藏色散人original
2020-07-11 09:24:423049parcourir

La solution à une erreur de segmentation en PHP : cochez d'abord "ulimit -a" puis définissez "ulimit -c unlimited" pour ne pas limiter la taille du fichier core puis utilisez gdb pour exécuter le programme et le fichier enregistré par l'erreur de segmentation ; précisez enfin que la taille du fichier principal est suffisante.

Que faire si une erreur de segmentation se produit dans l'extension php

Les programmes C sous Linux provoquent souvent des erreurs de segment en raison d'erreurs d'accès à la mémoire et d'autres raisons. À ce stade, si la fonction de vidage de mémoire du système est activée, alors. L'image mémoire sera vidée sur le disque dur. Vous pouvez ensuite utiliser gdb pour analyser le fichier core et restaurer la situation de la pile lorsque l'erreur de segmentation du système s'est produite. Cela nous est très utile pour trouver les bogues du programme.

Utilisez ulimit -a pour afficher la taille limite du fichier principal du système ; utilisez ulimit -c [kbytes] pour définir la taille du fichier principal que le système permet de générer.

ulimit -c 0 ne génère pas de fichiers principaux

ulimit -c 100 définit le fichier principal maximum à 100k

ulimit -c unlimited ne limite pas la taille du fichier principal

Étapes :

1. Lorsqu'une erreur de segmentation se produit, nous vérifions ulimit -a (taille du fichier principal (blocs, -c) 0) et il n'y a pas de fichier,

2. Paramètres : ulimit -c unlimited ne limite pas la taille du fichier core

3. Exécutez le programme, et lorsqu'une erreur de segmentation se produit, elle sera automatiquement enregistrée dans le core (php -f WorkWithArray.php)

4. ls -al core.* Sous ce fichier (-rw------- 1 leconte leconte 139264 01-06 22:3 1 core.2065)

5. Utilisez gdb pour exécuter le programme et segmenter les fichiers enregistrés. (gdb ./test core.2065)

6. Mentionnera quelle ligne est fausse.

La taille du fichier principal par défaut de nombreux systèmes est 0. Nous pouvons spécifier la taille du fichier principal en ajoutant la commande ulimit -c au script de démarrage du shell /etc/bashrc ou ~/.bashrc pour garantir que le fichier principal peuvent être générés.

De plus, vous pouvez également définir le modèle de nom de fichier du fichier core dans /proc/sys/kernel/core_pattern Pour plus de détails, veuillez consulter le manuel officiel de core.

Introduction connexe :

La commande Linux ulimit est utilisée pour contrôler les ressources du programme shell.

ulimit est une commande intégrée du shell, qui peut être utilisée pour contrôler les ressources du programme d'exécution du shell.

Syntaxe

ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

Paramètres :

-a Afficher les paramètres actuels de limite de ressources.

-c 5fd7535bd943a484f23af5bdc3ac05eb Définissez la valeur maximale du fichier core en blocs.

-d 6c249808faa26ceeb11b0e4e71f3b51a La valeur maximale de la section de données du programme, en Ko.

-f 603cefe8ae16eeb44a8ba2dcab6e4e56 Le plus gros fichier que le shell peut créer, en blocs.

-H Définissez la limite stricte des ressources, qui est la limite fixée par l'administrateur.

-m 6db5d67415051eecc03365937f43574d Spécifie la limite supérieure de la mémoire utilisable, en Ko.

-n d8f5ef1cb739f655b4ce0f5897f17548 Spécifie le nombre maximum de fichiers pouvant être ouverts en même temps.

-p 8edc7cfa23fd8b237e6a35701015e7cf Spécifie la taille du tampon du canal en 512 octets.

-s 1cd482feb27873c5277cd810401c8d35 Spécifie la limite supérieure de la pile, en Ko.

-S Définir la limite flexible des ressources.

-t fbfbe4e76445bd735c51a82e7a9fb6eb Spécifie la limite supérieure du temps d'utilisation du CPU, en secondes.

-u 537383c8ac21320400f01cfec9eefd2b Le nombre maximum de programmes qu'un utilisateur peut ouvrir.

-v d5b307f550a320ea1e1e87107f04573d Spécifie la limite supérieure de la mémoire virtuelle pouvant être utilisée, en Ko.

Pour plus de connaissances connexes, veuillez visiter le Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn