mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-10 16:27:54 -06:00
post changes after merging BS1.7.4
Remove tracking etc..
This commit is contained in:
parent
e65b11a831
commit
2a478ab4f9
615 changed files with 46215 additions and 54844 deletions
|
@ -38,7 +38,7 @@ CStackWalker::~CStackWalker(void)
|
|||
BOOL CStackWalker::LoadSymbol()
|
||||
{
|
||||
//USES_CONVERSION;
|
||||
//只加载一次
|
||||
//只加载一次
|
||||
if(m_bSymbolLoaded)
|
||||
{
|
||||
return m_bSymbolLoaded;
|
||||
|
@ -51,11 +51,11 @@ BOOL CStackWalker::LoadSymbol()
|
|||
return m_bSymbolLoaded;
|
||||
}
|
||||
|
||||
//添加当前程序路径
|
||||
//添加当前程序路径
|
||||
TCHAR szSymbolPath[MAX_SYMBOL_PATH] = _T("");
|
||||
StringCchCopy(szSymbolPath, MAX_SYMBOL_PATH, _T(".;"));
|
||||
|
||||
//添加程序所在目录
|
||||
//添加程序所在目录
|
||||
TCHAR szTemp[MAX_PATH] = _T("");
|
||||
if (GetCurrentDirectory(MAX_PATH, szTemp) > 0)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ BOOL CStackWalker::LoadSymbol()
|
|||
StringCchCat(szSymbolPath, MAX_SYMBOL_PATH, _T(";"));
|
||||
}
|
||||
|
||||
//添加程序主模块所在路径
|
||||
//添加程序主模块所在路径
|
||||
ZeroMemory(szTemp, MAX_PATH * sizeof(TCHAR));
|
||||
if (GetModuleFileName(NULL, szTemp, MAX_PATH) > 0)
|
||||
{
|
||||
|
@ -131,7 +131,7 @@ BOOL CStackWalker::LoadSymbol()
|
|||
|
||||
if (NULL != m_lpszSymbolPath)
|
||||
{
|
||||
m_bSymbolLoaded = SymInitialize(m_hProcess, textconv_helper::T2A_(m_lpszSymbolPath), TRUE); //这里设置为TRUE,让它在初始化符号表的同时加载符号表
|
||||
m_bSymbolLoaded = SymInitialize(m_hProcess, textconv_helper::T2A_(m_lpszSymbolPath), TRUE); //这里设置为TRUE,让它在初始化符号表的同时加载符号表
|
||||
}
|
||||
|
||||
DWORD symOptions = SymGetOptions();
|
||||
|
@ -167,7 +167,7 @@ void CStackWalker::FreeModuleInformations(LPMODULE_INFO pmi)
|
|||
|
||||
LPMODULE_INFO CStackWalker::GetModulesTH32()
|
||||
{
|
||||
//这里为了防止加载Toolhelp.dll 影响最终结果,所以采用动态加载的方式
|
||||
//这里为了防止加载Toolhelp.dll 影响最终结果,所以采用动态加载的方式
|
||||
LPMODULE_INFO pHead = NULL;
|
||||
LPMODULE_INFO pTail = pHead;
|
||||
|
||||
|
@ -391,13 +391,13 @@ void CStackWalker::GetModuleInformation(LPMODULE_INFO pmi)
|
|||
LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context)
|
||||
{
|
||||
//USES_CONVERSION;
|
||||
//加载符号表
|
||||
//加载符号表
|
||||
LoadSymbol();
|
||||
|
||||
LPSTACKINFO pHead = NULL;
|
||||
LPSTACKINFO pTail = pHead;
|
||||
|
||||
//获取当前线程的上下文环境
|
||||
//获取当前线程的上下文环境
|
||||
CONTEXT c = {0};
|
||||
if (context == NULL)
|
||||
{
|
||||
|
@ -411,7 +411,7 @@ LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context)
|
|||
}
|
||||
else
|
||||
{
|
||||
//如果不是当前线程,需要停止目标线程,以便取出正确的堆栈信息
|
||||
//如果不是当前线程,需要停止目标线程,以便取出正确的堆栈信息
|
||||
SuspendThread(hThread);
|
||||
memset(&c, 0, sizeof(CONTEXT));
|
||||
c.ContextFlags = CONTEXT_FULL;
|
||||
|
@ -446,7 +446,7 @@ LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context)
|
|||
sf.AddrFrame.Mode = AddrModeFlat;
|
||||
sf.AddrStack.Offset = c.Rsp;
|
||||
sf.AddrStack.Mode = AddrModeFlat;
|
||||
////intel Itanium(安腾)
|
||||
////intel Itanium(安腾)
|
||||
#elif _M_IA64
|
||||
imageType = IMAGE_FILE_MACHINE_IA64;
|
||||
sf.AddrPC.Offset = c.StIIP;
|
||||
|
@ -490,7 +490,7 @@ LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context)
|
|||
StringCchCopy(pCallStack->undName, STACKWALK_MAX_NAMELEN, textconv_helper::A2T_(szName));
|
||||
}else
|
||||
{
|
||||
//调用错误一般是487(地址无效或者没有访问的权限、在符号表中未找到指定地址的相关信息)
|
||||
//调用错误一般是487(地址无效或者没有访问的权限、在符号表中未找到指定地址的相关信息)
|
||||
this->OutputString(_T("Call SymGetSymFromAddr64 ,Address %08x Error:%08x\r\n"), sf.AddrPC.Offset, GetLastError());
|
||||
continue;
|
||||
}
|
||||
|
@ -505,7 +505,7 @@ LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context)
|
|||
continue;
|
||||
}
|
||||
|
||||
//这里为了将获取函数信息失败的情况与正常的情况一起输出,防止用户在查看时出现误解
|
||||
//这里为了将获取函数信息失败的情况与正常的情况一起输出,防止用户在查看时出现误解
|
||||
this->OutputString(_T("%08llx:%s [%s][%ld]\r\n"), pCallStack->szFncAddr, pCallStack->undFullName, pCallStack->szFileName, pCallStack->uFileNum);
|
||||
if (NULL == pHead)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue