2011-03-03 30 views
2

PHPで生成されたコアファイルからバックトレースを取得しようとしています。PHPコアファイルのデバッグ - 現在のコンテキストに "executor_globals"というシンボルはありません

私はthis guideを以下だし、私が使用して関数の名前を印刷しようとすると:

print (char *)(executor_globals.function_state_ptr->function)->common.function_name

を私はエラーを取得:

No symbol "executor_globals" in current context.

私はGDBを実行していますwith:

gdb /usr/sbin/apache2 /mnt/cores/core.apache2.8315

興味深いことに、Ubuntuでlibapache2-mod-php5パッケージを使用しているときに、この問題は発生しません。別の問題を解決するために自分のPHPモジュールをコンパイルする必要がありました。このモジュールをコンパイルすると、問題が発生します。

「no symbol executor_globals」のgoogle検索では、実際には0の結果が返されますが、これはかなり奇妙なものです。私は真剣にこの問題を抱えている唯一の人ですか?

答えて

0

私はこれを、スレッド化されていないApacheに対してPHPをコンパイルすることで解決しました。これは、とにかく私が望んでいたPHPモジュールのスレッド安全性を効果的に無効にします。

より具体的には、configure argsで指定していたapxs2バイナリは、Ubuntu apache2-threaded-devパッケージのものでしたが、サーバー上で実行されているApacheはスレッド化されていないプリフォークでした。ですから、代わりにapache2-prefork-devパッケージをインストールして再コンパイルしなければなりませんでした。

関連する問題