GDB выбрасывает ошибку, говоря, что программа имеет функцию "malloc" - PullRequest
3 голосов
/ 27 февраля 2012

Я выполнил следующие команды в gdb, и вывод консоли выглядит следующим образом:

Rohan_gdb$ set $var = 15
Rohan_gdb$ p $var
$5 = 0xf
Rohan_gdb$ set $var = (int *)10
Rohan_gdb$ p $var
$6 = (int *) 0xa
Rohan_gdb$ set $char = "abc"
Rohan_gdb$ p $char
$7 = "abc"
Rohan_gdb$ set $char = (char *)"xyz"
evaluation of this expression requires the program to have a function "malloc".

(здесь я получил ошибку)

Rohan_gdb$ p $char
$8 = "abc"
Rohan_gdb$

Здесь я отлаживаю с целевой, а не собственной отладкой,Я использую версию GNU GDB (GDB) 7.2.Можно ли решить с помощью скриптов.

1 Ответ

3 голосов
/ 27 апреля 2012

Я не знаю, как решить вашу конкретную проблему, но я столкнулся с чем-то похожим. Учитывая возраст вопроса, возможно, это даст подсказку.

Проблема в том, что ваш скрипт пытается сохранить значение в буфере, и он должен выделить новый буфер для этого хранилища. Требование к памяти, вероятно, является результатом приведения или потому, что эта вторая строка отсутствует в константных строках вашего двоичного файла.

Чтобы исправить, либо измените код, чтобы он не требовал malloc (насколько я могу судить, это хит или промах). Или сделайте символ malloc доступным; загрузить таблицу символов, которая позволяет GDB разрешать символ "_malloc".

...