解释gdb输出

时间:2011-09-20 05:21:46

标签: c linux gdb

我的程序中出现了段错误,并试图通过gdb检测源。

gdb的O / p如下:

[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 个答案:

答案 0 :(得分:4)

filename1filename是否都是指向以null结尾的字符串的有效指针?您可能会遇到段错误的最常见原因是您的指针未正确初始化或者其中一个字符串未以空值终止(可能是因为缓冲区溢出)而导致strlen()试图读取已分配内存的大小。