GDB步骤中显示的未知代码

时间:2014-02-18 07:29:12

标签: c++ gdb

我正在运行GDB,在逐步完成一些简单的C ++代码时,它开始显示下面的代码。有没有人知道这段代码是什么?

_Unwind_SjLj_Register (fc=0x28feac)
    at ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c:126
126     ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c: No such file or directory.
        in ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c
(gdb) step
128     in ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c
(gdb) step
131     in ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c
(gdb) step
133     in ../../../../src/gcc-4.6.1/libgcc/../gcc/unwind-sjlj.c

2 个答案:

答案 0 :(得分:3)

来自source code(不知道你使用的确切版本是否正确,但应该足够接近以获得想法):

//
// Called at start of each function that catches exceptions
//
EXPORT void _Unwind_SjLj_Register(struct _Unwind_FunctionContext* fc)
{
    fc->prev = __Unwind_SjLj_GetTopOfFunctionStack();
    __Unwind_SjLj_SetTopOfFunctionStack(fc);
}

通常,在编译后的C ++代码中会发生很多事情。当您单步执行代码时,您经常会遇到加密命名的编译器生成的函数,库函数,如您遇到的函数等。

答案 1 :(得分:0)

unwind通常表示异常处理代码,因此看起来您已经指示步入throw