// CCrashDlg message handlers BOOL CCrashDlg :: OnInitDialog ( ) { CDialog::OnInitDialog ( ) ; ASSERT ( NULL != m_pExptPtrs ) ; LPCTSTR szStr = GetFaultReason ( m_pExptPtrs ) ; m_cFaultReason.SetWindowText ( szStr ) ; szStr = GetRegisterString ( m_pExptPtrs ) ; m_cRegisters.SetWindowText ( szStr ) ; szStr = GetFirstStackTraceString ( GSTSO_MODULE | GSTSO_SYMBOL | GSTSO_SRCLINE , m_pExptPtrs ) ; while ( NULL != szStr ) { m_cCallStackList.AddString ( szStr ) ; szStr = GetNextStackTraceString ( GSTSO_MODULE | GSTSO_SYMBOL | GSTSO_SRCLINE , m_pExptPtrs ) ; } if ( FALSE == IsMiniDumpFunctionAvailable ( ) ) { m_cMiniDumpBtn.EnableWindow ( FALSE ) ; } return ( FALSE ) ; }
void BuildStackTrace() { FillMemory( g_stackTrace[0],MAX_STACK_TRACE*256, 0 ); const TCHAR* traceDump = GetFirstStackTraceString( GSTSO_MODULE | GSTSO_SYMBOL | GSTSO_SRCLINE, g_BlackBoxUIExPtrs ); g_stackTraceCount = 0; UpdateInitDlgProgress( 85 ); int incr = 85; while ( NULL != traceDump ) { lstrcpy( g_stackTrace[g_stackTraceCount], traceDump ); g_stackTraceCount++; UpdateInitDlgProgress( incr ); incr += 2; traceDump = GetNextStackTraceString( GSTSO_MODULE | GSTSO_SYMBOL | GSTSO_SRCLINE, g_BlackBoxUIExPtrs ); } }