問題タブ [debug-backtrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP、Auto SQL コメント、SQL を呼び出したファイルと行のデータベース デバッグ
大規模な php アプリケーションがあり、遅い sql クエリをデバッグしようとしています。実際に sql クエリを呼び出したファイルを次のように自動コメントする機能が必要です。
/* filename.php 行 234*/ が動的に挿入されます。おそらく
PHP には、http://php.net/manual/en/function.debug-print-backtrace.php という debug_backtrace があります。
手動で行うことができます:
しかし、db ドライバーのような、より中心的なものを期待していました。
MediaWiki にも同様の機能があります。 http://www.mediawiki.org/wiki/Manual:How_to_debug
PDOドライバーにはダンプステートメントがありますが、それはクエリにすぎず、誰がそれを呼び出したかではありません http://php.net/manual/en/pdostatement.debugdumpparams.php
それを実行しているphpページのコンテキストでSQLを最適にデバッグするにはどうすればよいですか?
c - バックトレース ログのスタック フレーム NULL
アプリケーションがセグメンテーション違反を受け取ります。バックトレースログ -
のスタックフレーム#9は興味深いものです。住所は0x0000000000000000です。これは、に到達する前にスタックが破損したことを意味しますengine_unlocked_finish ()か?
php - 出力バッファリング コールバック中に debug_backtrace() が失敗する
最近、アプリケーションがランダムな実行ポイントで特定のものをエコーしました。正確なステートメントを見つけるのが問題であることが判明しました。あまりにも多くのステートメントが出力されました。
したがって、 ob_start()を介してコールバックを登録し、コールバックがdebug_backtrace()をエコーしてアプリケーションを終了できるようにしました。
コールバックの最初のステートメントとして出力バッファリングを無効にしようとしたことに注意してください。
残念ながら、debug_backtrace()は何も返しませんでした。コールバックでdebug_backtrace()を呼び出すと、アプリがクラッシュしました。
debug_backtrace() の内容を (stdout ではなく) ファイルに保存することさえできませんでした。
誰かが理由を説明できますか?
php - PHP バックトレースが無限の文字列をダンプする
適切に実行されていない単純な PHP 関数を診断するために、奇妙なエラーをデバッグしています。機能自体は問題ありません。debug_print_backtrace() を使用してバックトレースを実行すると、印刷と印刷が無限に続けられます。バックトレースはこのように実行することになっていますか?
サイト自体は Opencart v1.5.4.1 で、最新バージョンの CentOS を実行する専用の Linux ボックスでホストされています。適切に診断するために他に何を提供する必要がありますか? 私は以前にこのようなことに出くわしたことがないので、非常に混乱し、どこを向いたらよいかわかりません。Google 検索は、明確さを妨げるものは何も提供しません。何か案は?
php - debug_backtrace() での Apache/PHP セグメンテーション違反
Drupal プロジェクトで特定のアクションを実行すると、PHP がクラッシュします。では/var/log/apache2/error.log、次のことがわかります。
[Wed Jul 08 09:51:13.068078 2015] [core:notice] [pid 9130] AH00051: child pid 9135 exit signal セグメンテーション違反 (11)、/etc/apache2 のコアダンプの可能性
を使用して、 (毎回ではなく) が呼び出されxdebug.auto_trace=Onたときにクラッシュが発生することを確認できました。debug_backtrace()
コアダンプを取得できました。実行時に得られるものは次のsudo gdb /usr/sbin/apache2 /tmp/coredumps/core-apache2.9135とおりです。
プログラムはシグナル SIGSEGV、セグメンテーション違反で終了しました。
#0 0x00007f12e1c7422a in zend_std_object_get_class_name () from /usr/lib/apache2/modules/libphp5.so
問題をさらにトラブルシューティングするにはどうすればよいですか?
php - PHP-FPM segfault エラー 6
php5-fpm に問題があります。多くの場合、segfault が発生し、php 処理全体がブロックされているため、クライアントに応答がありません。私にとって、バックトレースは無限ループのように見えますが、それがスクリプトまたは内部 php モジュールによるものかどうかはわかりません。
どのスクリプト/モジュールが関与しているかを確認する機会はありますか?
Segfault は常にそのように見えます (dmesg 出力):
PHP バージョン:
コアダンプのバックトレース:
バックトレース取得ファイル名:
インストール済みパッケージ:
php - PHP は、echo または sprintf から呼び出される関数です。
関数が呼び出された場所を見たい。
関数は echo または sprintf 内で呼び出されますか? それから戻ります。それ以外の場合はコンテンツをエコーします。
このコード(test.php)を取得しました:
ターミナルで入力すると、次のようになります。
(Webからのpsと同じ)
私のPHPバージョンは次のとおりです。
php - 非デバッグ関数の一部として debug_backtrace を実行しても問題ありませんか?
特定の親(または祖父母関数、または曽祖父母など)から呼び出された場合にのみ、関数を実行しようとしています。debug_backtrace を使用してやりたいことを達成できますが、これは正しい方法ではないように感じます。たとえば、次のようにします。
これは、savethepost関数がbulk_edit_posts関数から呼び出された場合にのみ、Wordpress関数でバックトレースを使用してset_post_format関数を実行しています。これは私が達成しようとしているものです。しかし、このメソッドはデバッグ用なので、このように使用しても問題ないでしょうか? そうでない場合、特定の親関数からのみ来ている場合、どうすれば関数を呼び出すことができますか?
gdb - gdb backtrace は、各関数がどのライブラリから取得されたかをどのように認識しますか?
私は簡単なプログラムを書きました。meller1 という関数を呼び出し、meller2 を呼び出し、いくつかの関数が free を呼び出してクラッシュするまで続けます。このプログラムでコアダンプ ファイルを使用して gdb backtrace を実行すると、次のメッセージが表示されます。
私の質問は、gdb bt は free が /lib/libc.so.6 から取得されたことをどのように認識するのでしょうか? Coredump ファイルと実行可能ファイル自体を指定して、自分で手動で行う方法はありますか? ありがとう。
php - 結果内のいくつかのオブジェクトを含む文字列へのphp debug_backtrace()
__set 関数で debug_backtrace() を使用してアプリケーションをデバッグしたいと考えています。
文字列として必要なので、試してみました$myStringVar = print_r(debug_backtrace(),true);
しかし、これはうまくいきません。配列に debug_backtrace() が返すオブジェクトがいくつかあることがわかりました。
そのため、オブジェクトを無視して別の方法で文字列に変換する必要があります。
しかし、これを行う方法は?