Как сказал Николай, вы можете использовать команду gdb 'set' для изменения значения переменной.
Вы также можете использовать команду 'set' для изменения местоположения памяти.
например. Расширение на примере Николая:
(gdb) l
6 {
7 int i;
8 struct file *f, *ftmp;
9
(gdb) set variable i = 10
(gdb) p i
$1 = 10
(gdb) p &i
$2 = (int *) 0xbfbb0000
(gdb) set *((int *) 0xbfbb0000) = 20
(gdb) p i
$3 = 20
Это должно работать для любого допустимого указателя и может быть применено к любому соответствующему типу данных.
Ответ 3
Расширение ответов, представленных здесь.
Вы можете просто сделать set idx = 1, чтобы установить переменную, но этот синтаксис не рекомендуется, так как имя переменной может столкнуться с установленной подкомандой. В качестве примера set w=1 недействительно.
Это означает, что вы должны предпочесть синтаксис: set variable idx = 1 или set var idx = 1.
И последнее, но не менее важное: вы можете просто использовать свою надежную старую команду печати, так как она оценивает выражение. Единственное отличие состоит в том, что он также печатает результат выражения.