为什么要提升(3)核心转储文件没有堆栈帧symble

时间:2016-06-03 02:01:48

标签: stack coredump raise

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 ?? ()

杀灭(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. 为什么提高(3)帧addr这么大,这个数字意味着什么?

  2. 为什么raise(3)在堆栈框架中没有symble?

1 个答案:

答案 0 :(得分:0)

我在加载核心转储文件时设置了sysroot,然后up和kill bt变得相同。