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

藏色散人
Libérer: 2023-03-02 11:18:01
original
3055 Les gens l'ont consulté

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 <虚拟内存大小>]
Copier après la connexion

Paramètres :

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

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

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

-f 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 Spécifie la limite supérieure de la mémoire utilisable, en Ko.

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

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

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

-S Définir la limite flexible des ressources.

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

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

-v 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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!