問題タブ [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.

0 投票する
1 に答える
152 参照

php - debug_backtrace() がキャプチャする関数引数の状態は?

いくつかの抽象的なコード:

debug_trace はテスト関数の引数について何を教えてくれるでしょうか? 5 または 10 として
キャプチャされますか?$a

0 投票する
1 に答える
1802 参照

php - PHP で各関数呼び出しをトレースする

PHP アプリケーションでトレーサー ログを作成しようとしています。デバッグ モードをオンにすると、関数のフローの追跡が開始されます。

以下は、私の実装として期待しているものです。

PHPコードの流れを追跡したい。

debug_backtraceを使用できることはわかっていますが、この場合、debug_backtrace関数の 1 つを明示的に呼び出す必要があります。

しかし、私が望むのは、コードの流れを自動的に追跡することです。

それを行う方法はありますか。

0 投票する
1 に答える
309 参照

php - PHP 警告: mysqli 接続を渡すときの print_r および debug_backtrace

私は非常に複雑なシステムを持っており、クエリを実行するたびに MySQLi 接続を開閉していましたが、特定の操作ごとに約 40,000 回実行していました (非効率的です)。このオープンとクローズの繰り返しの非効率性を防ぐために、関数間で mysqli 接続を渡すことにしました。

debug_backtrace()私の問題は、クエリが失敗したときに、読みやすい形式でフォーマットされた を自分自身に電子メールで送信したかった(そのため、 でラップしたprint_r()) ことです。print_r(): Property access is not allowed yet in... on line XXX何らかの理由で、行 XXX が単純に読み取られる場所を示す PHP 警告が表示されるようになりましたaddNotification("Backtrace: ".print_r(debug_backtrace(), true), "debug");

バックトレースで渡されたパラメーターの 1 つがオブジェクトである場合にprint_r()気に入らない理由はありますか? debug_backtrace()mysqli_connect mysqli_connect には toString 関数がありませんか?

編集もう少し調査した結果、オブジェクトに対してprint_rorを呼び出すことができることがわかりましたが、そのオブジェクトがd の場合、この警告が発生します。閉じていればOKです。var_dumpmysqli_connectmysqli_closeunset

0 投票する
2 に答える
559 参照

php - エラー行とファイル番号を追跡する適切な方法。カスタムエラーハンドルメソッドを使用するカスタム関数で debug_backtrace() を使用

正常に動作するカスタム エラー ハンドラ(以下を参照) を作成しました。エラーの出力とログ記録に使用されるadd()メソッドを追加しました。基本的に、PHP に登録されたすべてのエラーを処理します。

開発者がエラーを追加しやすくするために、クラスの外にadd_error()関数を追加しようとしました。私が抱えている問題は、そこから適切な行とファイルを取得したいのですが、debug_backtrace()を使用すると複雑すぎるようです。つまり..それはトリックを行いますが、他の不要なものの配列を返し、配列をフィルタリングして、エラーが呼び出されたファイルと行を返しましたが、うまくいきませんでした。

たとえば、クラス ファイルerror-handle.phpが含まれているload.phpファイルから$error- >add(' test ',' test ')を呼び出すと、返されます。

ご覧のとおり、 load.phpの代わりにindex.phpを返します。

基本的に、 add_error()または$error->add()を呼び出すたびに、関数が呼び出された適切なファイルと行を取得する必要があります。おそらく、高度なフィルタリングでdebug_backtrace()を使用することによって。

この結果を得る方法についてのガイダンスやアイデアに感謝します。前もって感謝します!

カスタム エラー ハンドラ: