ホームページ >バックエンド開発 >PHPの問題 >php 拡張機能でセグメンテーション違反が発生した場合の対処方法

php 拡張機能でセグメンテーション違反が発生した場合の対処方法

藏色散人
藏色散人オリジナル
2020-07-11 09:24:423101ブラウズ

PHP でのセグメンテーション違反の解決策: 最初に "ulimit -a" を確認し、次にコア ファイルのサイズを制限しないように "ulimit -c unlimited" を設定し、次に gdb を使用してプログラムを実行し、セグメンテーション違反によって記録されたファイル; 最後に指定する コア ファイルのサイズは十分です。

php 拡張機能でセグメンテーション違反が発生した場合の対処方法

Linux 上の C プログラムでは、メモリアクセスエラーなどによりセグメントフォルトが発生することが多く、このときシステムコアダンプ機能が有効になっていると、メモリ イメージがハードディスクにダンプされ、gdb を使用してコア ファイルを分析し、システム セグメンテーション フォールトが発生したときのスタック状況を復元できます。これはプログラムのバグを見つけるのに非常に役立ちます。

システム コア ファイルのサイズ制限を表示するには、ulimit -a を使用します。システムが生成できるコア ファイルのサイズを設定するには、ulimit -c [kbytes] を使用します。

ulimit -c 0 はコア ファイルを生成しません

ulimit -c 100 は最大コア ファイルを 100k に設定します

ulimit -c unlimited はコア ファイル サイズを制限しません

手順:

1. セグメンテーション違反が発生した場合、ulimit -a (core file size (blocks, -c) 0) を確認しますが、ファイルがありません。

2. 設定: ulimit -c unlimited はコア ファイル サイズを制限しません。

3. プログラムを実行すると、セグメンテーション違反が発生すると、自動的にコアに記録されます (php - f WorkWithArray.php)

4. ls -al core.* そのファイルの下 (-rw------- 1 leconte leconte 139264 01-06 22:3 1 core.2065)

5. gdb を使用してプログラムを実行し、障害記録ファイルをセグメント化します。 (gdb ./test core.2065)

6.どの行が間違っているか指摘してもらえますか?

多くのシステムのデフォルトのコア ファイル サイズは 0 です。コア ファイルのサイズを指定するには、シェル起動スクリプト /etc/bashrc または ~/.bashrc に ulimit -c コマンドを追加します。生成することができます。

また、/proc/sys/kernel/core_pattern にコアファイルのファイル名テンプレートを設定することもできます。詳細はコアの公式マニュアルを参照してください。

関連紹介:

Linux ulimit コマンドは、シェル プログラムのリソースを制御するために使用されます。

ulimit はシェルの組み込みコマンドであり、シェル実行プログラムのリソースを制御するために使用できます。

構文

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

パラメータ:

-a 現在のリソース制限設定を表示します。

-c コアファイルの最大値をブロック単位で設定します。

-d プログラム データ セクションの最大値 (KB 単位)。

-f 419b56d0c6f08affffb00e1dbe48c1de シェルが作成できる最大のファイル (ブロック単位)。

-H リソースのハード制限を設定します。これは、管理者によって設定された制限です。

-m 使用可能なメモリの上限を KB 単位で指定します。

-n 同時に開くことができるファイルの最大数を指定します。

-p パイプ バッファのサイズを 512 バイトで指定します。

-s スタックの上限を KB 単位で指定します。

-S リソースの柔軟な制限を設定します。

-t CPU 使用時間の上限を秒単位で指定します。

-u ユーザーが開くことができるプログラムの最大数。

-v 使用できる仮想メモリの上限を KB 単位で指定します。

関連知識の詳細については、PHP 中国語 Web サイト をご覧ください。

以上がphp 拡張機能でセグメンテーション違反が発生した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。