Я хочу произвести отладку и остановить программу когда будет соблюдаться определенное условие. Допустим сумма регистров eax+ebx будет равна 65463.
Для совсем уж произвольного условия, типа того, что вы написали, готовых средств скорее всего нет.
Если вам нужно остановиться, когда программная переменная в памяти принимает определённое значение -- искать в вашем отладчике по слову watchpoint. В gdb, например, можно поставить watchpoint на переменную, а в commands вписать код, который будет продолжать выполнение, если значение переменной не то, что вам нужно, например:
$ cat > main.c
int v;
static void f(int *p)
{
int i;
for (i = 0; i < 20; ++i)
*p = (i - 10) * (i - 10);
}
int main()
{
f(&v);
return 0;
}
$ gcc -g2 -o watch main.c
$ gdb ./watch
...
Reading symbols from ./watch...done.
(gdb) start
Temporary breakpoint 1 at 0x4004ec: file main.c, line 13.
Starting program: /home/jcmvbkbc/tmp/toster/watch/watch
Temporary breakpoint 1, main () at main.c:13
13 f(&v);
(gdb) watch v
Hardware watchpoint 2: v
(gdb) commands
Type commands for breakpoint(s) 2, one per line.
End with a line saying just "end".
>if (v != 4)
>continue
>end
>end
(gdb) c
Continuing.
...
Hardware watchpoint 2: v
Old value = 9
New value = 4
f (p=0x600904 <v>) at main.c:7
7 for (i = 0; i < 20; ++i)
(gdb)