Во-первых, вам нужно убедиться, что ваша программа скомпилирована с символами отладки и, возможно, без оптимизации, чтобы сделать GDB наиболее полезным. Для gcc это будет -g -O0
.
Во-вторых, функция, которую вы ищете, не отслеживается, это точки наблюдения.
(gdb) help watch
Set a watchpoint for an expression.
A watchpoint stops execution of your program whenever the value of
an expression changes.
Итак, приведем пример кода:
int main() {
int a;
a = 1;
a = 2;
return 0;
}
затем вы можете запустить на нем gdb и:
(gdb) b main
Breakpoint 1 at 0x80483a5: file test.c, line 4.
(gdb) run
Starting program: /tmp/test
Breakpoint 1, main () at test.c:4
4 a = 1;
(gdb) watch a
Hardware watchpoint 2: a
(gdb) c
Continuing.
Hardware watchpoint 2: a
Old value = -1207552288
New value = 2
main () at test.c:8
8 return 0;
работает немного забавно из-за наличия в стеке, а не памяти. И если бы была включена оптимизация, она бы работала еще меньше: a была бы оптимизирована.