我正在运行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
答案 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
。