我正在做snprintf
并发生分段故障。了解分段故障的堆栈轨迹
当我加载核心文件在gdb像这样:gdb my_executable core
;并做bt
得到回溯,我得到了以下内容:
Program terminated with signal 11, Segmentation fault.
#0 0x88207fc2 in memcpy() from /usr/lib/libc.so.6
(gdb) bt
#0 0x88207fc2 in memcpy() from /usr/lib/libc.so.6
#1 0x88205eb6 in __sfvwrite() from /usr/lib/libc.so.6
#2 0x881fbc95 in strchr() from /usr/lib/libc.so.6
#3 0xbfbe6c14 in ??()
#4 0xbfbe69d8 in ??()
#5 0x881ed91e in localeconv() from /usr/lib/libc.so.6
#6 0x881fec05 in __vfprintf() from /usr/lib/libc.so.6
#7 0x881f7d80 in snprintf() from /usr/lib/libc.so.6
#8 0x08052b64 in my_function (files=0xbfbed710, filename=<value optimized out>) at myfile.c:1102
#9 0x08053bfb in main (argc=4, argv=0xbfbedd90) at myfile.c:225
我在赛格故障的情况下,看到这样的堆栈很多次,但从来没有正确理解。
只看跟踪电话,我们可以告诉出了什么问题吗?
注意:请不要要求更多的代码。我的动机是简单地理解像这样的堆栈跟踪意味着什么 - 而不考虑代码。我看到顶部的“memcpy”失败了。我想了解在这种情况下何时会发生这种情况。
感谢您的“常见原因”。我正在寻找可能导致此类段错误的详尽列表。感谢您的帮助:) – hari