From 2fc716467bc339f9ce9b1a22308bd9497b560b4e Mon Sep 17 00:00:00 2001 From: Alexander Pinnecke Date: Fri, 10 Apr 2015 17:52:41 +0200 Subject: [PATCH] Added stack trace to debug toolbar --- Logger/PropelLogger.php | 23 +++++++++++ Resources/views/Collector/propel.html.twig | 44 +++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/Logger/PropelLogger.php b/Logger/PropelLogger.php index efc5866..698efc3 100644 --- a/Logger/PropelLogger.php +++ b/Logger/PropelLogger.php @@ -64,6 +64,7 @@ class PropelLogger implements LoggerInterface } $add = true; + $stackTrace = $this->getStackTrace(); if (null !== $this->stopwatch) { $trace = debug_backtrace(); @@ -90,6 +91,7 @@ class PropelLogger implements LoggerInterface 'connection' => $connection->getName(), 'time' => $event->getDuration() / 1000, 'memory' => $event->getMemory(), + 'stackTrace' => $stackTrace, ); } @@ -100,4 +102,25 @@ class PropelLogger implements LoggerInterface { return $this->queries; } + + /** + * Returns the current stack trace. + * + * @return array + */ + private function getStackTrace() + { + $e = new \Exception(); + $trace = explode("\n", $e->getTraceAsString()); + $trace = array_reverse($trace); + array_shift($trace); // remove {main} + array_pop($trace); // remove call to this method + + foreach ($trace as $i => &$value) { + $value = $i + 1 . ')' . substr($value, strpos($value, ' ')); + $value = preg_replace('/\((\d+)\)/', ':$1', $value, 1); + } + + return $trace; + } } diff --git a/Resources/views/Collector/propel.html.twig b/Resources/views/Collector/propel.html.twig index dbd0b51..1a4c1cf 100644 --- a/Resources/views/Collector/propel.html.twig +++ b/Resources/views/Collector/propel.html.twig @@ -65,8 +65,38 @@ font-size: 17px; margin-bottom: 0; } + + .query-trace { + display: none; + overflow: auto; + padding: 5px; + border: 1px solid silver; + margin: 5px; + border-radius: 5px; + font-family: monospace; + white-space: nowrap; + color: #333; + } + + .query-trace .gray { + color: silver; + } + + .query-trace .gray + .regular { + margin-top: 3px; + } + .query-trace .regular + .gray { + margin-top: 3px; + } + +

Queries

@@ -94,12 +124,24 @@ {% endif %}
- Time: {{ query.time }} - Memory: {{ query.memory|format_memory }} - Connection: {{ query.connection }} + Time: {{ query.time }} - Memory: {{ query.memory|format_memory }} - Connection: {{ query.connection }} - + Stacktrace {% if app.request.query.get('query', -1) != i %} - Explain the query {% endif %}
+
+ {% for trace in query.stackTrace %} +
{{ trace }}
+ {% endfor %} +
{% endfor %}