Beispiel #1
0
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();
}
Beispiel #2
0
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 );
}