Интерпретация вывода GDB - PullRequest
       3

Интерпретация вывода GDB

1 голос
/ 20 сентября 2011

Я получил ошибку в моей программе и пытался определить источник с помощью GDB.

O / p GDB выглядит следующим образом:

[Switching to Thread 0xb6dffb70 (LWP 6448)]
#0 0x00adc026 in __strlen_sse2_bsf () from /lib/libc.so/6
#1 0x08049e77 in sim_txn (fd=0x804c5c0) at rand_trace0.c:390

и на rand_trace0.c:390У меня есть строка

system_call_length = strlen("rename(")+strlen(filename1)+strlen(",")+strlen(filename)+strlen(")")+1;

До этого все вроде работало.Я в растерянности.

1 Ответ

4 голосов
/ 20 сентября 2011

Являются ли filename1 и filename действительными указателями на строки с нулевым символом в конце?Наиболее распространенная причина, по которой вы можете получить segfault, заключается в том, что ваш указатель не был должным образом инициализирован или если одна из строк не завершена нулем (возможно, из-за переполнения буфера) и, следовательно, приводит к strlen() попыткеПрочитать размер выделенной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...