{"id":38570,"date":"2015-09-08T16:11:11","date_gmt":"2015-09-08T16:11:11","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/oik-bwtrace\/"},"modified":"2025-05-10T15:36:39","modified_gmt":"2025-05-10T15:36:39","slug":"oik-bwtrace","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/oik-bwtrace\/","author":7443420,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.1.0","stable_tag":"4.1.0","tested":"6.8.5","requires":"5.0","requires_php":"5.6","requires_plugins":null,"header_name":"oik bwtrace","header_author":"bobbingwide","header_description":"","assets_banners_color":"ffffff","last_updated":"2025-05-10 15:36:39","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.oik-plugins.com\/oik\/oik-donate\/","header_plugin_uri":"https:\/\/www.oik-plugins.com\/oik-plugins\/oik-bwtrace","header_author_uri":"https:\/\/www.bobbingwide.com\/about-bobbing-wide","rating":5,"author_block_rating":0,"active_installs":20,"downloads":6186,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.11":{"tag":"2.0.11","author":"bobbingwide","date":"2017-06-12 09:05:34"},"2.0.5":{"tag":"2.0.5","author":"bobbingwide","date":"2015-09-08 16:54:28"},"2.0.6":{"tag":"2.0.6","author":"bobbingwide","date":"2015-09-25 15:57:07"},"2.0.7":{"tag":"2.0.7","author":"bobbingwide","date":"2015-10-14 08:51:46"},"2.0.8":{"tag":"2.0.8","author":"bobbingwide","date":"2015-11-04 16:42:45"},"2.0.9":{"tag":"2.0.9","author":"bobbingwide","date":"2015-12-18 16:46:24"},"2.1.1":{"tag":"2.1.1","author":"bobbingwide","date":"2017-12-21 16:02:38"},"3.0.0":{"tag":"3.0.0","author":"bobbingwide","date":"2020-04-29 07:31:55"},"3.2.1":{"tag":"3.2.1","author":"bobbingwide","date":"2021-03-20 13:10:43"},"3.2.2":{"tag":"3.2.2","author":"bobbingwide","date":"2021-09-14 09:00:15"},"3.3.1":{"tag":"3.3.1","author":"bobbingwide","date":"2022-03-22 11:04:28"},"3.4.0":{"tag":"3.4.0","author":"bobbingwide","date":"2022-08-19 15:05:16"},"3.4.1":{"tag":"3.4.1","author":"bobbingwide","date":"2023-08-08 06:34:39"},"3.4.2":{"tag":"3.4.2","author":"bobbingwide","date":"2023-10-09 16:57:51"},"3.4.3":{"tag":"3.4.3","author":"bobbingwide","date":"2023-10-15 14:31:08"},"3.4.5":{"tag":"3.4.5","author":"bobbingwide","date":"2023-12-09 17:54:15"},"3.4.6":{"tag":"3.4.6","author":"bobbingwide","date":"2024-03-12 15:35:14"},"3.4.7":{"tag":"3.4.7","author":"bobbingwide","date":"2024-07-05 06:48:03"},"3.5.0":{"tag":"3.5.0","author":"bobbingwide","date":"2024-09-21 11:36:30"},"4.0.0":{"tag":"4.0.0","author":"bobbingwide","date":"2024-09-25 08:37:15"},"4.1.0":{"tag":"4.1.0","author":"bobbingwide","date":"2025-05-10 15:36:39"}},"upgrade_notice":{"4.1.0":"<p>Updated to support PHP 8.4.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":"1"},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":1252919,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":1240792,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":1240792,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.11","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9","2.1.1","3.0.0","3.2.1","3.2.2","3.3.1","3.4.0","3.4.1","3.4.2","3.4.3","3.4.5","3.4.6","3.4.7","3.5.0","4.0.0","4.1.0"],"block_files":[],"assets_screenshots":{"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3290948,"resolution":"8","location":"plugin"},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3290948,"resolution":"9","location":"plugin"},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3290948,"resolution":"7","location":"plugin"},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3290948,"resolution":"3","location":"plugin"},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3290948,"resolution":"4","location":"plugin"},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3290948,"resolution":"1","location":"plugin"},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3290948,"resolution":"5","location":"plugin"},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3290948,"resolution":"2","location":"plugin"},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3290948,"resolution":"6","location":"plugin"}},"screenshots":{"1":"Trace files directory box","2":"Trace options - Requests sections","3":"Trace options - Trace records","4":"Daily Trace Summary box","5":"Action options - Options","6":"Action options - Ad hoc tracing","7":"Trace information box","8":"Raw trace output","9":"Daily Trace Summary file"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[225390,23032,94,18991],"plugin_category":[59],"plugin_contributors":[79761,79762],"plugin_business_model":[],"class_list":["post-38570","plugin","type-plugin","status-publish","hentry","plugin_tags-ad-hoc-tracing","plugin_tags-backtrace","plugin_tags-debug","plugin_tags-trace","plugin_category-utilities-and-tools","plugin_contributors-bobbingwide","plugin_contributors-vsgloik","plugin_committers-bobbingwide"],"banners":{"banner":"https:\/\/ps.w.org\/oik-bwtrace\/assets\/banner-772x250.jpg?rev=1240792","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/oik-bwtrace\/assets\/icon-128x128.jpg?rev=1252919","icon_2x":"https:\/\/ps.w.org\/oik-bwtrace\/assets\/icon-256x256.jpg?rev=1240792","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-1.jpg?rev=3290948","caption":"Trace files directory box"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-2.jpg?rev=3290948","caption":"Trace options - Requests sections"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-3.jpg?rev=3290948","caption":"Trace options - Trace records"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-4.jpg?rev=3290948","caption":"Daily Trace Summary box"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-5.jpg?rev=3290948","caption":"Action options - Options"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-6.jpg?rev=3290948","caption":"Action options - Ad hoc tracing"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-7.jpg?rev=3290948","caption":"Trace information box"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-8.jpg?rev=3290948","caption":"Raw trace output"},{"src":"https:\/\/ps.w.org\/oik-bwtrace\/trunk\/screenshot-9.jpg?rev=3290948","caption":"Daily Trace Summary file"}],"raw_content":"<!--section=description-->\n<ul>\n<li>The primary purpose of debug trace is to help in the development of PHP code: plugins or themes.<\/li>\n<li>The primary purpose of action trace is to help you understand the sequence of events in the server.<\/li>\n<li>The primary purpose of ad hoc tracing is to let you see what's happening without changing any code.<\/li>\n<li>The primary purpose of 'string watch' is to track the source of some output.<\/li>\n<li>This plugin provides the admin interface to trace functions and methods and action and filter tracing.<\/li>\n<\/ul>\n\n<p>oik bwtrace does not alter the output of your web pages though there are options\nwhich cause some output to be written to the browser during 'shutdown' processing.<\/p>\n\n<p>You can also use the oik trace facilities to assist in problem determination in a live site.\nOutput is written to files on the server in a user defined trace files directory. \nWhen tracing a live or staging site you should ensure that the trace files directory is not publicly accessible.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Traces to a defined Trace files directory<\/li>\n<li>Traces ALL server functionality, including AJAX, REST and other background requests<\/li>\n<li>Writes summary trace record for each transaction into Daily Trace summary files<\/li>\n<li>Traces browser transactions separately, if required<\/li>\n<li>Traces AJAX transactions separately, if required <\/li>\n<li>Traces REST requests separately, if required<\/li>\n<li>Traces CLI requests separately, if required<\/li>\n<li>Ability to choose the IP address to trace, defaults to ALL requests<\/li>\n<li>Supports ad hoc tracing of user defined hooks<\/li>\n<li>Action trace counts help you understand the sequence of actions and filters<\/li>\n<li>Provides contextual information<\/li>\n<li>Minimum performance overhead when tracing is not enabled<\/li>\n<li>Tracing can be enabled programmatically<\/li>\n<li>Traces and backtraces PHP Error, Warning and Notice messages<\/li>\n<li>Backtraces deprecated logic messages<\/li>\n<li>Does not require WP_DEBUG to be defined<\/li>\n<li>Does not require SAVEQUERIES to be defined<\/li>\n<li>Dynamically activates trace functions<\/li>\n<li>Implemented as lazy just-in-time code<\/li>\n<li>Can be used during regression testing<\/li>\n<li>Can be activated in wp-config.php and db.php to trace code before WordPress is fully loaded<\/li>\n<li>Plugin does not need to be activated if started programmatically or from wp-config.php<\/li>\n<li>Operates as a standalone plugin<\/li>\n<li>Integrated with oik-lib shared library management<\/li>\n<li>Easy to code APIs: bw_trace2(), bw_backtrace().<\/li>\n<li>API supports multiple trace levels<\/li>\n<\/ul>\n\n<p>Ad hoc tracing allows you to:<\/p>\n\n<ul>\n<li>trace parameters<\/li>\n<li>trace results<\/li>\n<li>trace registered functions<\/li>\n<li>trace the global post<\/li>\n<li>set the priority for the trace hook<\/li>\n<li>debug backtrace hook invocation<\/li>\n<li>perform 'string watch' to watch for a particular string<\/li>\n<\/ul>\n\n<p>The trace record output can include:<\/p>\n\n<ul>\n<li>Fully qualified source file name<\/li>\n<li>Trace record count and trace error count<\/li>\n<li>Time stamp<\/li>\n<li>Current filter information<\/li>\n<li>Hook count<\/li>\n<li>Number of database queries that have been performed.<\/li>\n<li>Current post ID<\/li>\n<li>Current and peak memory usage (in bytes)<\/li>\n<li>Files loaded count<\/li>\n<li>Contextual information<\/li>\n<\/ul>\n\n<p>The output for action tracing can include trace records showing:<\/p>\n\n<ul>\n<li>Count of action hooks and filters<\/li>\n<li>Invocation of the 'wp' actions<\/li>\n<li>Contents of the global wp_rewrite for the 'wp' action<\/li>\n<li>Summary reports at 'shutdown'<\/li>\n<li>Information about deprecated logic<\/li>\n<li>Information related to Errors, Warnings and Notices<\/li>\n<\/ul>\n\n<p>New in v3.4.0<\/p>\n\n<ul>\n<li>Experimental Performance trace option<\/li>\n<li>Experimental front end links to trace file and daily trace summary<\/li>\n<\/ul>\n\n<h3>Is there a tutorial?<\/h3>\n\n<p>See this page and short video\n<a href=\"https:\/\/www.oik-plugins.com\/wordpress-plugins-from-oik-plugins\/free-oik-plugins\/oik-trace-plugin\/an-introduction-to-problem-determination-with-oik-bwtrace-debug-trace-for-wordpress\">Introduction to oik-bwtrace<\/a><\/p>\n\n<h4>Can I get support?<\/h4>\n\n<p>Use the contact form on the oik-plugins website.<\/p>\n\n<h4>How can I contribute?<\/h4>\n\n<p>[github bobbingwide oik-bwtrace]<\/p>\n\n<h3>Further reading<\/h3>\n\n<p>If you want to read more about the oik plugins then please visit the\n<a href=\"https:\/\/www.oik-plugins.com\/oik\">oik plugin<\/a>\n<strong>\"the oik plugin - for often included key-information\"<\/strong><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the contents of the oik-bwtrace plugin to the `\/wp-content\/plugins\/oik-bwtrace' directory<\/li>\n<li>Activate the oik-bwtrace plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Define your trace options using Settings &gt; oik trace options<\/li>\n<li>Define your action trace options using Settings &gt; oik action options<\/li>\n<li>Don't forget to disable tracing when you no longer need it<\/li>\n<li>Don't forget to purge the trace output when you no longer need it<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='where%20is%20the%20faq%3F'><h3>Where is the FAQ?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/www.oik-plugins.com\/oik-plugins\/oik-bwtrace-debug-trace-for-wordpress\/?oik-tab=faq\">oik-bwtrace FAQ<\/a><\/p><\/dd>\n<dt id='where%20is%20the%20documentation%3F'><h3>Where is the documentation?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/www.oik-plugins.com\/wordpress-plugins-from-oik-plugins\/free-oik-plugins\/oik-trace-plugin\/\">oik-bwtrace - debug trace for WordPress<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>Changed: Migrate PHPUnit tests to PHPUnit 10 &amp; 11 #116<\/li>\n<li>Changed: Add bw_trace_determine_locale() hook for 'determine_locale' filter #120<\/li>\n<li>Changed: Add Theme info to trace status report #121.<\/li>\n<li>Changed: Call bw_trace_locale() #120<\/li>\n<li>Changed: Add bw_trace_locale() #120<\/li>\n<li>Changed: Support PHP 8.4 #116<\/li>\n<li>Changed: Add locale info to trace records #120<\/li>\n<li>Changed: Don't perform translations too early #120<\/li>\n<li>Fixed: Avoid message when trace summary file prefix isn't set #116<\/li>\n<li>Tested: With WordPress 6.8 and WordPress Multisite<\/li>\n<li>Tested: With PHPUnit 10<\/li>\n<li>Tested: With PHP 8.3 and PHP 8.4<\/li>\n<\/ul>","raw_excerpt":"Debug trace for WordPress, including ad hoc action hook and filter tracing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/38570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=38570"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bobbingwide"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=38570"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=38570"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=38570"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=38570"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=38570"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=38570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}