【问题标题】:why raise(3) core dump file no stack frame symble为什么 raise(3) 核心转储文件没有堆栈帧符号
【发布时间】:2016-10-02 22:55:24
【问题描述】:

ENV: linux 内核 3.4,uclibc 0.9.33

说明:我使用 raise(3) 和 kill(3) 发送 SIGSEGV 来处理并创建一个核心转储文件。我找到了 2 个文件 bt 是不同的。

提高(3):

void fun2(void)
{
    raise(SIGSEGV);
}

void fun1(void)
{
    fun2();
}

int main(void)
{
    fun1();
    return 0;
}

核心转储文件堆栈帧:

(gdb) bt
#0  0xc6f7f2d4 in ?? ()
#1  0xc6f7f2a0 in ?? ()
#2  0xc6f7f2a0 in ?? ()

kill(3):

void fun2(void)
{
    kill(getpid(), SIGSEGV);
}

void fun1(void)
{
    fun2();
}

int main(void)
{
    fun1();
    return 0;
}

核心转储文件堆栈帧:

(gdb) bt
#0  0xc6f043f0 in ?? ()
#1  0x0000852c in fun2 () at test.c:20
#2  0x0000853c in fun1 () at test.c:25
#3  0x0000854c in main () at test.c:30

问题:

  1. 为什么raise(3) frame addr 这么大,这个数字是什么意思?

  2. 为什么 raise(3) 在堆栈帧中没有符号?

【问题讨论】:

    标签: stack coredump raise


    【解决方案1】:

    我在加载核心转储文件时设置了sysroot,然后raise和kill bt就一样了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多