SL-315 - verbose option for CallStack objects, doc headers in StackWalker.{h,cpp}

meow-7.2.2
Brad Payne (Vir Linden) 2016-01-28 10:40:38 -05:00
parent e91a192301
commit c92079db31
4 changed files with 15 additions and 7 deletions

View File

@ -6,6 +6,8 @@
*
* $LicenseInfo:firstyear=2016&license=bsd$
*
* Linden notes: Small modifications from the original source at https://stackwalker.codeplex.com/
*
* History:
* 2005-07-27 v1 - First public release on http://www.codeproject.com/
* http://www.codeproject.com/threads/StackWalker.asp
@ -1012,8 +1014,9 @@ BOOL StackWalker::LoadModules()
static StackWalker::PReadProcessMemoryRoutine s_readMemoryFunction = NULL;
static LPVOID s_readMemoryFunction_UserData = NULL;
BOOL StackWalker::ShowCallstack(HANDLE hThread, const CONTEXT *context, PReadProcessMemoryRoutine readMemoryFunction, LPVOID pUserData)
BOOL StackWalker::ShowCallstack(bool verbose, HANDLE hThread, const CONTEXT *context, PReadProcessMemoryRoutine readMemoryFunction, LPVOID pUserData)
{
m_verbose = verbose;
CONTEXT c;
CallstackEntry csEntry;
IMAGEHLP_SYMBOL64 *pSym = NULL;

View File

@ -6,6 +6,8 @@
*
* $LicenseInfo:firstyear=2016&license=bsd$
*
* Linden notes: Small modifications from the original source at https://stackwalker.codeplex.com/
*
* LICENSE (http://www.opensource.org/licenses/bsd-license.php)
*
* Copyright (c) 2005-2009, Jochen Kalmbach
@ -113,6 +115,7 @@ public:
BOOL LoadModules();
BOOL ShowCallstack(
bool verbose,
HANDLE hThread = GetCurrentThread(),
const CONTEXT *context = NULL,
PReadProcessMemoryRoutine readMemoryFunction = NULL,

View File

@ -39,10 +39,10 @@ public:
~LLCallStackImpl()
{
}
void getStack(std::vector<std::string>& stack, S32 skip_count=0)
void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false)
{
m_stack.clear();
ShowCallstack();
ShowCallstack(verbose);
// Skip the first few lines because they're just bookkeeping for LLCallStack,
// plus any additional lines requested to skip.
S32 first_line = skip_count + 3;
@ -74,15 +74,16 @@ public:
LLCallStackImpl *LLCallStack::s_impl = NULL;
LLCallStack::LLCallStack(S32 skip_count):
m_skipCount(skip_count)
LLCallStack::LLCallStack(S32 skip_count, bool verbose):
m_skipCount(skip_count),
m_verbose(verbose)
{
if (!s_impl)
{
s_impl = new LLCallStackImpl;
}
LLTimer t;
s_impl->getStack(m_strings, m_skipCount);
s_impl->getStack(m_strings, m_skipCount, m_verbose);
}
std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack)

View File

@ -29,8 +29,9 @@ class LLCallStackImpl;
class LLCallStack
{
public:
LLCallStack(S32 skip_count=0);
LLCallStack(S32 skip_count=0, bool verbose=false);
std::vector<std::string> m_strings;
bool m_verbose;
private:
static LLCallStackImpl *s_impl;
S32 m_skipCount;