Занятый русский дал правильное решение, но для тех, кто хочет увидеть его, используйте пример, см. Ниже. Если вы не уверены, хотите ли вы поместить файл .gdbinit в свой домашний каталог, вы также можете поместить его в каталог, из которого вы запускаете программу, для эксперимента.
$ gcc -g atof_ex4.2.c
$ gdb ./a.out
(gdb) b 30
Breakpoint 1 at 0x1907: file atof_ex4.2.c, line 30.
(gdb) h user-defined
List of commands:
disp_vars -- User-defined
(gdb) disp_vars #this will enable the user defined canned sequence (but I haven't done run yet! So I'll this actually doesn't work yet.)
No symbol "i" in current context.
(gdb) r
Starting program: a.out
Breakpoint 1, atof (s=0xbffff028 "123.45e-6") at atof_ex4.2.c:30
30 if(s[i] != '\0')
(gdb) s # No disp_vars output yet because I have to do it AFTER 'run' command
32 if(s[i] == 'e' || s[i] == 'E')
(gdb) disp_vars # Now it will work ;)
(gdb) s
35 sign = (s[i] == '-') ? -1 : 1;
5: s[i] = 45 '-'
4: exp = 14
3: val = 123.45
2: sign = 1
1: i = 7
Конечно, 'r' для запуска, 's' для шага, 'b' для перерыва и т. Д. Я также пропустил некоторые выходные данные. Обратите внимание, что мне пришлось снова ввести команду «disp_vars» после «run». Спасибо Занятый русский.