我们的一个代码是生成核心文件 尝试使用gdb使用以下命令分析核心 gdb programe_name核心
我无法使用backtrace命令检索tarce
#4 0x20202020 in ?? ()
#5 0x20202020 in ?? ()
#6 0x20202020 in ?? ()
#7 0x20202020 in ?? ()
#8 0x20202020 in ?? ()
#9 0x20202020 in ?? ()
#10 0x20202020 in ?? ()
#11 0x20202020 in ?? ()
#12 0x20202020 in ?? ()
#13 0x20202020 in ?? ()
#14 0x20202020 in ?? ()
#15 0x20202020 in ?? ()
#16 0x20202020 in ?? ()
#17 0x20202020 in ?? ()
#18 0x20202020 in ?? ()
#19 0x20202020 in ?? ()
我们有一个命令可以用来跟踪函数名和参数吗
答案 0 :(得分:3)
看起来你的堆栈已经“嘎吱嘎吱” - 也就是说,用一些不应该存在的数据覆盖。
0x20202020是ASCII中的四个空格,因此堆栈已被一串具有大量空格的字符覆盖。
查找您正在读入的数组(或变量)(或将字符复制到其中);您正在读取/复制的数据超出预期的数据/变量。
为了避免将来出现这种情况,请使用其中一种表格,允许您将读取/复制的数量限制为目标区域的大小:
fread
fgets
strncpy
您可能还想查看答案 Reading in a variable length string user input in C 在将未知长度的数据读入缓冲区时,作为保护自己的相对安全的方法。