I ‘m wondering if it ‘s possible to create a script that will continue the program ‘s execution (after a break) step by step based on the memory address value.
So, if I ‘m tracing a function and it goes into a high memory value, I ‘d call the gdb script until the memory value is below a set value – then it would break again.
I ‘m very new to gdb and still reading the manual/tutorials, but I ‘d like to know if my goal is possible 🙂 – and if you could bump me to the proper direction, even better 😉
Thanks!
Edit, updated with pseudocode:
while (1) {
cma = getMemoryAddressForCurrentInstruction();
if (cma > 0xdeadbeef) {
stepi;
} else {
break;
}
}
You’re talking about the Program Counter (sometimes called the instruction pointer). It’s available in gdb as
$pc. Your pseudocode can be translated into this actual gdb command:It’ll be slow, since it’s starting and stopping the program for every instruction, but as far as I know there’s no fast way to do it if you don’t know exactly what address you’re looking for. If you do, then you can just set a breakpoint there:
will run until the program counter hits 0xf0abcdef