コード例 #1
0
ファイル: debug.c プロジェクト: ABratovic/open-watcom-v2
static void DeactivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList )
{
    struct TDebugBreak  *b = BreakList;
    struct TDebugWatch  *w = WatchList;
    int                 bnum = 0;
    opcode_type         brk_opcode;

    if( !obj->FWasTrace ) {
        while( w ) {
            if (bnum < 4) {
                RdosClearBreak( obj->ThreadID, bnum );
                bnum++;
            }
            w = w->Next;
        }

        while( b ) {
            if ((b->Sel & 0x3) == 0x3) {
                RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) );
                b->Instr = brk_opcode;
            } else {
                if (bnum < 4) {
                    RdosClearBreak( obj->ThreadID, bnum );
                    bnum++;
                }
            }
            b = b->Next;
        }
    }
}
コード例 #2
0
ファイル: debug.c プロジェクト: ABratovic/open-watcom-v2
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList )
{
    struct TDebugBreak  *b = BreakList;
    struct TDebugWatch  *w = WatchList;
    opcode_type         brk_opcode = BRKPOINT;
    int                 bnum = 0;

    while( w ) {
        if (bnum < 4) {
            RdosSetWriteDataBreak( obj->ThreadID, bnum, w->Sel, w->Offset, w->Size );
            bnum++;
        }
        w = w->Next;
    }

    while( b ) {
        if ((b->Sel & 0x3) == 0x3) {
            RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) );
            b->Instr = brk_opcode;
            RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, (char *)&brk_opcode, sizeof( brk_opcode ) );
        } else {
            if (bnum < 4) {
                RdosSetCodeBreak( obj->ThreadID, bnum, b->Sel, b->Offset );
                bnum++;
            }
        }
        b = b->Next;
    }
}
コード例 #3
0
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList, struct TDebugWatch *WatchList )
{
    struct TDebugBreak *b = BreakList;
    struct TDebugWatch *w = WatchList;
    char brinstr = 0xCC;
    int bnum = 0;

    while( w ) {
        if (bnum < 4) {
            RdosSetWriteDataBreak( obj->ThreadID, bnum, w->Sel, w->Offset, w->Size );
            bnum++;
        }
        w = w->Next;
    }

    while( b ) {
        if ((b->Sel & 0x3) == 0x3) {
            RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 );
            RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &brinstr, 1 );
        } else {
            if (bnum < 4) {
                RdosSetCodeBreak( obj->ThreadID, bnum, b->Sel, b->Offset );
                bnum++;
            }
        }
        b = b->Next;
    }
}
コード例 #4
0
static void DeactivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList )
{
    struct TDebugBreak *b = BreakList;

    if( !obj->FWasTrace ) {
        while( b ) {
            RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 );
            b = b->Next;
        }
    }
}
コード例 #5
0
static void ActivateBreaks( struct TDebugThread *obj, struct TDebugBreak *BreakList )
{
    struct TDebugBreak *b = BreakList;
    char brinstr = 0xCC;

    while( b ) {
        RdosReadThreadMem( obj->ThreadID, b->Sel, b->Offset, &b->Instr, 1 );
        RdosWriteThreadMem( obj->ThreadID, b->Sel, b->Offset, &brinstr, 1 );

        b = b->Next;
    }
}
コード例 #6
0
int WriteMem( struct TDebugThread *obj, int Sel, long Offset, char *Buf, int Size )
{
    return RdosWriteThreadMem( obj->ThreadID, Sel, Offset, Buf, Size );
}