summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2010-05-07 16:18:41 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2010-05-07 16:18:41 +0000
commitfeecb7d4beed9dc58a82201acd692631cdf6d0b3 (patch)
tree4262720fc235b9ff8e896eb45d74a92549598d2e /rbutil/rbutilqt
parent227e619bbfeaf7d5d3112cc35a1865ff96129c5c (diff)
downloadrockbox-feecb7d4beed9dc58a82201acd692631cdf6d0b3.tar.gz
rockbox-feecb7d4beed9dc58a82201acd692631cdf6d0b3.zip
Add repeat counting to system trace.
This make the system trace check for repeating lines, and only print a "(last message repeated n lines.)" instead of the real message multiple times. This keeps the trace much shorter if messages are repeated. The drawback is that the replacement count message will only get printed on the next line getting traced, so until that happens it swallows the repeated lines. Before saving the systrace buffer is flushed, so this should not raise a problem. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25878 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r--rbutil/rbutilqt/systrace.cpp29
-rw-r--r--rbutil/rbutilqt/systrace.h3
2 files changed, 29 insertions, 3 deletions
diff --git a/rbutil/rbutilqt/systrace.cpp b/rbutil/rbutilqt/systrace.cpp
index 1b9de6b713..a1e8bd0239 100644
--- a/rbutil/rbutilqt/systrace.cpp
+++ b/rbutil/rbutilqt/systrace.cpp
@@ -24,6 +24,8 @@
24#include "rbsettings.h" 24#include "rbsettings.h"
25 25
26QString SysTrace::debugbuffer; 26QString SysTrace::debugbuffer;
27QString SysTrace::lastmessage;
28unsigned int SysTrace::repeat = 0;
27 29
28SysTrace::SysTrace(QWidget *parent) : QDialog(parent) 30SysTrace::SysTrace(QWidget *parent) : QDialog(parent)
29{ 31{
@@ -41,6 +43,7 @@ SysTrace::SysTrace(QWidget *parent) : QDialog(parent)
41void SysTrace::refresh(void) 43void SysTrace::refresh(void)
42{ 44{
43 int pos = ui.textTrace->verticalScrollBar()->value(); 45 int pos = ui.textTrace->verticalScrollBar()->value();
46 flush();
44 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); 47 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>");
45 ui.textTrace->verticalScrollBar()->setValue(pos); 48 ui.textTrace->verticalScrollBar()->setValue(pos);
46 QString oldlog = RbSettings::value(RbSettings::CachePath).toString() 49 QString oldlog = RbSettings::value(RbSettings::CachePath).toString()
@@ -54,6 +57,8 @@ void SysTrace::save(QString filename)
54 if(filename.isEmpty()) 57 if(filename.isEmpty())
55 filename = RbSettings::value(RbSettings::CachePath).toString() 58 filename = RbSettings::value(RbSettings::CachePath).toString()
56 + "/rbutil-trace.log"; 59 + "/rbutil-trace.log";
60 // make sure any repeat detection is flushed
61 flush();
57 // append save date to the trace. Append it directly instead of using 62 // append save date to the trace. Append it directly instead of using
58 // qDebug() as the handler might have been unregistered. 63 // qDebug() as the handler might have been unregistered.
59 debugbuffer.append("[SysTrace] saving trace at "); 64 debugbuffer.append("[SysTrace] saving trace at ");
@@ -91,11 +96,29 @@ void SysTrace::savePreviousTrace(void)
91void SysTrace::debug(QtMsgType type, const char* msg) 96void SysTrace::debug(QtMsgType type, const char* msg)
92{ 97{
93 (void)type; 98 (void)type;
94 debugbuffer.append(msg); 99 if(lastmessage != msg) {
95 debugbuffer.append("\n"); 100 lastmessage = msg;
101 flush();
102 debugbuffer.append(msg);
103 debugbuffer.append("\n");
96#if !defined(NODEBUG) 104#if !defined(NODEBUG)
97 fprintf(stderr, "%s\n", msg); 105 fprintf(stderr, "%s\n", msg);
98#endif 106#endif
107 repeat = 1;
108 }
109 else {
110 repeat++;
111 }
112}
99 113
114void SysTrace::flush(void)
115{
116 if(repeat > 1) {
117 debugbuffer.append(
118 QString(" (Last message repeasted %1 times.)\n").arg(repeat));
119#if !defined(NODEBUG)
120 fprintf(stderr, " (Last message repeated %i times.)\n", repeat);
121#endif
122 }
100} 123}
101 124
diff --git a/rbutil/rbutilqt/systrace.h b/rbutil/rbutilqt/systrace.h
index 4e6206a886..f15e33c149 100644
--- a/rbutil/rbutilqt/systrace.h
+++ b/rbutil/rbutilqt/systrace.h
@@ -34,8 +34,11 @@ class SysTrace : public QDialog
34 static QString getTrace() {return debugbuffer;} 34 static QString getTrace() {return debugbuffer;}
35 static void save(QString filename = ""); 35 static void save(QString filename = "");
36 private: 36 private:
37 static void flush(void);
37 Ui::SysTraceFrm ui; 38 Ui::SysTraceFrm ui;
38 static QString debugbuffer; 39 static QString debugbuffer;
40 static QString lastmessage;
41 static unsigned int repeat;
39 42
40 private slots: 43 private slots:
41 void saveCurrentTrace(void); 44 void saveCurrentTrace(void);