Description
TLloancy Stack Trace records PHP fatals (memory exhausted, parse error, and similar), uncaught exceptions, wp_die failures, and exceptions that a third-party plugin caught so the site would not white-screen.
Each row stores:
- The last SQL that actually belongs to the crash (from
$wpdb, or from a small adapter when a plugin talks to MySQL outside$wpdb) - Memory usage, peak, and the configured limit
- File and line
- The plugin, theme, or core component most likely involved
- The request URL
Entries live in a dedicated table, under Tools Stack Trace. You can export CSV or clear the log.
This is not a debug.log viewer and not a live profiler. Generic log plugins tail PHP or WordPress logs. Stack Trace records why a request died: the SQL that belongs to the crash (including plugins that never set $wpdb->last_query), memory at the limit, and exceptions another plugin caught so the site would not white-screen. Typical case: an All-in-One WP Migration export that fails with “refresh and try again” while the real cause is a 128M SELECT or a full disk.
It is for the morning after: the site crashed, nobody was watching, and you want the cause.
Plugins that bypass $wpdb
Some exporters (All-in-One WP Migration among them) run SQL on $wpdb->dbh directly. $wpdb->last_query is then empty or already overwritten (cron, Action Scheduler). Stack Trace keeps SQL in memory via adapters and, on failure, can read that plugin’s own error-log last_query field. It does not edit third-party files and does not hook their export pipeline as a stage.
Automatic update failure emails (WordPress 7.2+)
A failed automatic plugin update already includes the fatal message, file, and line. Stack Trace adds memory and last SQL from the same loopback check, with a link to the full log.
Installation
- Upload the
tlloancy-stack-tracefolder to/wp-content/plugins/. - Activate the plugin from the Plugins screen.
- Open the log under Tools Stack Trace.
FAQ
-
Does this slow the site down?
-
On a normal request the cost is a shutdown callback that returns immediately unless PHP reports a fatal. A row is written only when something is recorded. Adapters add work only for the target plugin’s AJAX (for example an All-in-One export hop): a header check on success, disk I/O only on failure.
-
How many entries are kept?
-
300 by default. Older rows are pruned when you open the admin page. Override the limit with
TLLST_MAX_ENTRIESin wp-config.php. -
Does the plugin change other plugins’ files?
-
No. It does not reorder
active_pluginsand it does not patch files on disk. -
Why is the last SQL not always from $wpdb?
-
If the crash is inside a known custom MySQL client,
$wpdb->last_queryis often unrelated. The adapter’s in-memory SQL (or that plugin’s error log) is used instead.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“TLloancy Stack Trace” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “TLloancy Stack Trace” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release.
- Fatals, swallowed exceptions, and memory crashes with SQL, memory, file/line.
- Adapter for All-in-One WP Migration (observe only).
- WordPress 7.2 automatic update failure emails include memory and last SQL from the loopback check, per failed plugin.
