Я пытаюсь отлаживать программу на языке C, и gdb сообщает мне, что существует строка segfault в строке 329 определенной функции. Поэтому я установил точку останова для этой функции, и я пытаюсь ее преодолеть. Однако всякий раз, когда я нажимаю строку 68, я получаю эту жалобу от gdb:
(gdb) step
68 next_bb = (basic_block *)malloc(sizeof(basic_block));
(gdb) step
*__GI___libc_malloc (bytes=40) at malloc.c:3621
3621 malloc.c: No such file or directory.
in malloc.c
Я не знаю, что это значит. Программа работает отлично на всех, кроме одного набора входов, поэтому этот вызов malloc явно преуспевает во время других исполнений программы. И, конечно же, у меня есть:
#include <stdlib.h>.
Вот исходный код:
// Block currently being built.
basic_block *next_bb = NULL;
// Traverse the list of instructions in the procedure.
while (curr_instr != NULL)
{
simple_op opcode = curr_instr->opcode;
// If we are not currently building a basic_block then we must start a new one.
// A new block can be started with any kind of instruction.
if (!in_block)
{
// Create a new basic_block.
next_bb = (basic_block *)malloc(sizeof(basic_block));