std::string gdbmiStack(CIDebugControl *debugControl, CIDebugSymbols *debugSymbols, unsigned maxFrames, bool humanReadable, std::string *errorMessage) { bool incomplete; const StackFrames frames = getStackTrace(debugControl, debugSymbols, maxFrames, &incomplete, errorMessage); if (frames.empty() && maxFrames > 0) return std::string(); std::ostringstream str; str << '['; const StackFrames::size_type size = frames.size(); for (StackFrames::size_type i = 0; i < size; ++i) { if (i) str << ','; frames.at(i).formatGDBMI(str, (int)i); if (humanReadable) str << '\n'; } if (incomplete) // Empty elements indicates incomplete. str <<",{}"; str << ']'; return str.str(); }
void StackHandler::prependFrames(const StackFrames &frames) { if (frames.isEmpty()) return; const int count = frames.size(); beginInsertRows(QModelIndex(), 0, count - 1); for (int i = count - 1; i >= 0; --i) m_stackFrames.prepend(frames.at(i)); endInsertRows(); if (m_currentIndex >= 0) setCurrentIndex(m_currentIndex + count); emit stackChanged(); }