GDB有助于分析核心

时间:2017-02-18 05:14:58

标签: gdb

我们的一个代码是生成核心文件 尝试使用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 ?? ()

我们有一个命令可以用来跟踪函数名和参数吗

1 个答案:

答案 0 :(得分:3)

看起来你的堆栈已经“嘎吱嘎吱” - 也就是说,用一些不应该存在的数据覆盖。

0x20202020是ASCII中的四个空格,因此堆栈已被一串具有大量空格的字符覆盖。

查找您正在读入的数组(或变量)(或将字符复制到其中);您正在读取/复制的数据超出预期的数据/变量。

为了避免将来出现这种情况,请使用其中一种表格,允许您将读取/复制的数量限制为目标区域的大小:

fread
fgets
strncpy

您可能还想查看答案 Reading in a variable length string user input in C 在将未知长度的数据读入缓冲区时,作为保护自己的相对安全的方法。