void DebugFini( void ) { PointFini(); #if !( defined( __GUI__ ) && defined( __OS2__ ) ) ReleaseProgOvlay( TRUE ); // see dlgfile.c #endif VarDisplayFini(); FiniHook(); FiniCmd(); LogFini(); while( !PurgeInpStack() ) { ClearInpStack( INP_STOP_PURGE ); } LangSetFini(); SupportFini(); FiniTrap(); RecordFini(); FiniMachState(); FiniDbgInfo(); FiniScan(); FiniLook(); FiniDLLList(); FiniSource(); FiniCall(); PathFini(); DUIFini(); SymCompFini(); FiniMADInfo(); FiniTrace(); RestoreHandlers(); _Free( TrapParms ); FiniLiterals(); FiniLocalInfo(); }
void DbgUpdate( update_list flags ) { mod_handle prev_mod; input_stack *inp; UpdateFlags |= flags; if( flags & ( UP_SYM_CHANGE ) ) { BrkAddrRefresh(); } if( flags & (UP_REG_CHANGE|UP_CSIP_CHANGE) ) { InitLC( &Context, TRUE ); } if( flags & UP_NEW_PROGRAM ) { SetStackPos( &Context, 0 ); } if( flags & (UP_SYM_CHANGE+UP_STACKPOS_CHANGE+UP_REG_CHANGE+UP_CSIP_CHANGE+UP_CSIP_JUMPED) ) { SymCompFini(); prev_mod = ContextMod; if( DeAliasAddrMod( Context.execution, &ContextMod ) == SR_NONE ) ContextMod = NO_MOD; if( prev_mod != ContextMod ) { HookNotify( FALSE, HOOK_NEW_MODULE ); } } if( flags & (UP_CODE_ADDR_CHANGE | UP_SYM_CHANGE ) ) { prev_mod = CodeAddrMod; if( DeAliasAddrMod( GetCodeDot(), &CodeAddrMod ) == SR_NONE ) { CodeAddrMod = NO_MOD; } if( prev_mod != CodeAddrMod ) { for( inp = InpStack; inp != NULL; inp = inp->link ) { inp->type |= INP_NEW_LANG; } } } DUIUpdate( flags ); }