Итак, я делаю кучу стека/кучи с помощью gdb и пытаюсь захватить значение для someInt
, но бросил мои ограниченные знания gdb, чтобы получить его без эффекта. Мне нужно получить значение someInt
с помощью GDB, и это только ссылки в одном месте за пределами #define, строка 20Как напечатать #define значение в gdb?
#define someInt 0x11111111
void someFunc() {
// ...
int a = 0;
if(a==someInt) { //line 20
//...
}
}
После вызова GDB на скомпилированной программе я попытался gdb break 20
, а затем gdb x\dw $someInt
я получаю Нет символа «someInt» в текущем контексте. Если я попробую x/dw 0x11111111
, я получаю «Невозможно получить доступ к памяти по адресу 0x11111111». Я не могу перекомпилировать код a la How do I print a #defined constant in GDB? и, таким образом, потерял информацию о том, как печатать значение в этом пространстве.
Как использовать gdb (скорее всего, с x) для печати значения someInt?
'захватить значение для someInt' .... концептуальная проблема. Что такое 'someInt' ?? –
someInt - это значение, которое, если «a» соответствует ему, дает мне (через оператор if) ложный доступ к оболочке, чтобы продемонстрировать концепцию в книге –
Итак, вы можете увидеть определение, но вы все равно хотели бы знать значение макроса ? Или вам нужно распечатать значение a? – dbrank0