Changeset View
Changeset View
Standalone View
Standalone View
src/parser/backtraceparsergdb.cpp
Show All 18 Lines | |||||
19 | #include "backtraceparser_p.h" | 19 | #include "backtraceparser_p.h" | ||
20 | #include "drkonqi_parser_debug.h" | 20 | #include "drkonqi_parser_debug.h" | ||
21 | 21 | | |||
22 | #include <QFileInfo> | 22 | #include <QFileInfo> | ||
23 | #include <QRegularExpression> | 23 | #include <QRegularExpression> | ||
24 | 24 | | |||
25 | //BEGIN BacktraceLineGdb | 25 | //BEGIN BacktraceLineGdb | ||
26 | 26 | | |||
27 | const QLatin1String BacktraceParserGdb::KCRASH_INFO_MESSAGE("KCRASH_INFO_MESSAGE: "); | ||||
28 | | ||||
27 | BacktraceLineGdb::BacktraceLineGdb(const QString & lineStr) | 29 | BacktraceLineGdb::BacktraceLineGdb(const QString & lineStr) | ||
28 | : BacktraceLine() | 30 | : BacktraceLine() | ||
29 | { | 31 | { | ||
30 | d->m_line = lineStr; | 32 | d->m_line = lineStr; | ||
31 | d->m_functionName = QLatin1String("??"); | 33 | d->m_functionName = QLatin1String("??"); | ||
32 | parse(); | 34 | parse(); | ||
33 | if (d->m_type == StackFrame) { | 35 | if (d->m_type == StackFrame) { | ||
34 | rate(); | 36 | rate(); | ||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Line(s) | 92 | } else { //'from' means we have a library | |||
91 | d->m_library = match.captured(5); | 93 | d->m_library = match.captured(5); | ||
92 | } | 94 | } | ||
93 | } | 95 | } | ||
94 | 96 | | |||
95 | qCDebug(DRKONQI_PARSER_LOG) << d->m_stackFrameNumber << d->m_functionName << d->m_file << d->m_library; | 97 | qCDebug(DRKONQI_PARSER_LOG) << d->m_stackFrameNumber << d->m_functionName << d->m_file << d->m_library; | ||
96 | return; | 98 | return; | ||
97 | } | 99 | } | ||
98 | 100 | | |||
101 | if (d->m_line.contains(BacktraceParserGdb::KCRASH_INFO_MESSAGE)) { | ||||
102 | qCDebug(DRKONQI_PARSER_LOG) << "info:" << d->m_line; | ||||
103 | d->m_type = Info; | ||||
104 | return; | ||||
105 | } | ||||
106 | | ||||
99 | regExp.setPattern(QStringLiteral(".*\\(no debugging symbols found\\).*|" | 107 | regExp.setPattern(QStringLiteral(".*\\(no debugging symbols found\\).*|" | ||
100 | ".*\\[Thread debugging using libthread_db enabled\\].*|" | 108 | ".*\\[Thread debugging using libthread_db enabled\\].*|" | ||
101 | ".*\\[New .*|" | 109 | ".*\\[New .*|" | ||
102 | "0x[0-9a-f]+.*|" | 110 | "0x[0-9a-f]+.*|" | ||
103 | "Current language:.*")); | 111 | "Current language:.*")); | ||
104 | if (regExp.match(d->m_line).hasMatch()) { | 112 | if (regExp.match(d->m_line).hasMatch()) { | ||
105 | qCDebug(DRKONQI_PARSER_LOG) << "garbage detected:" << d->m_line; | 113 | qCDebug(DRKONQI_PARSER_LOG) << "garbage detected:" << d->m_line; | ||
106 | d->m_type = Crap; | 114 | d->m_type = Crap; | ||
▲ Show 20 Lines • Show All 91 Lines • ▼ Show 20 Line(s) | |||||
198 | void BacktraceParserGdb::parseLine(const QString & lineStr) | 206 | void BacktraceParserGdb::parseLine(const QString & lineStr) | ||
199 | { | 207 | { | ||
200 | Q_D(BacktraceParserGdb); | 208 | Q_D(BacktraceParserGdb); | ||
201 | 209 | | |||
202 | BacktraceLineGdb line(lineStr); | 210 | BacktraceLineGdb line(lineStr); | ||
203 | switch (line.type()) { | 211 | switch (line.type()) { | ||
204 | case BacktraceLine::Crap: | 212 | case BacktraceLine::Crap: | ||
205 | break; //we don't want crap in the backtrace ;) | 213 | break; //we don't want crap in the backtrace ;) | ||
214 | case BacktraceLine::Info: | ||||
215 | d->m_infoLines << line.toString().mid(KCRASH_INFO_MESSAGE.size()); | ||||
sitter: Please add a comment on what that +2 is, or better yet give it a var so it has an explicit name… | |||||
216 | break; | ||||
206 | case BacktraceLine::ThreadStart: | 217 | case BacktraceLine::ThreadStart: | ||
207 | d->m_linesList.append(line); | 218 | d->m_linesList.append(line); | ||
208 | d->m_possibleKCrashStart = d->m_linesList.size(); | 219 | d->m_possibleKCrashStart = d->m_linesList.size(); | ||
209 | d->m_threadsCount++; | 220 | d->m_threadsCount++; | ||
210 | //reset the state of the flags that need to be per-thread | 221 | //reset the state of the flags that need to be per-thread | ||
211 | d->m_isBelowSignalHandler = false; | 222 | d->m_isBelowSignalHandler = false; | ||
212 | d->m_frameZeroAppeared = false; // gdb bug workaround flag, see below | 223 | d->m_frameZeroAppeared = false; // gdb bug workaround flag, see below | ||
213 | break; | 224 | break; | ||
▲ Show 20 Lines • Show All 85 Lines • Show Last 20 Lines |
Please add a comment on what that +2 is, or better yet give it a var so it has an explicit name in code.