GDB :: 覆盖的运算符新函数的调用堆栈不完整?
GDB:: Call Stack incomplete for overridden operator new function?
我已经重写了 new(unsigned int) 和 delete(void*) 运算符,以手动跟踪有关堆的信息并将其作为学习过程。虽然我在跟踪新的运算符函数时遇到了问题。
我在 GDB 中使用 CodeBlocks。无论我是进入运算符函数还是在其中设置断点,如果我进入 return 指令,它都无法跟随调用函数。调用堆栈 window 也不显示调用函数地址。
有线索吗?提前致谢!
虽然问题中没有足够的信息来明确回答,但我会冒险猜测。
我的猜测是您正在尝试调试优化的构建,甚至可能没有调试符号。
如果你在没有优化的情况下构建 (-O0
),生成的代码将更接近源代码,因为优化器不会有内联函数,移动代码等。如果你启用调试符号 (-g
) 编译器会将更多信息放入二进制文件中,调试器可以使用这些信息为您提供有关符号和值的更准确信息。
我已经重写了 new(unsigned int) 和 delete(void*) 运算符,以手动跟踪有关堆的信息并将其作为学习过程。虽然我在跟踪新的运算符函数时遇到了问题。
我在 GDB 中使用 CodeBlocks。无论我是进入运算符函数还是在其中设置断点,如果我进入 return 指令,它都无法跟随调用函数。调用堆栈 window 也不显示调用函数地址。
有线索吗?提前致谢!
虽然问题中没有足够的信息来明确回答,但我会冒险猜测。
我的猜测是您正在尝试调试优化的构建,甚至可能没有调试符号。
如果你在没有优化的情况下构建 (-O0
),生成的代码将更接近源代码,因为优化器不会有内联函数,移动代码等。如果你启用调试符号 (-g
) 编译器会将更多信息放入二进制文件中,调试器可以使用这些信息为您提供有关符号和值的更准确信息。