GCC GDB没有调试信息



我正在尝试防止g 插入模板的函数,这会导致GDB缺乏调试信息,例如本地变量甚至当前行号。

实际上,我猜这是与内部模板函数有关的事情,因为这是唯一无法访问Callstack中任何内容的情况。

我几乎尝试了我在G 选项中可以使用的一切,例如:

-DDEBUG -O0 -fno-inline -fno-implicit-inline-templates

,甚至考虑使用__attribute__(((noinline)))将我的功能前缀前缀。

我的呼叫箱看起来像

#0  CVector<CGatherColor>::operator[] (this=0x9324480, index=1208) at ../utils/vector.h:28
#1  0x0000000000ee1d27 in unsigned int CBrdfLoop::trace_t<CAreaLightSquare, CNoCulling, CAreaLightSquare, CBrdfLdSampler>(int, unsigned int, CPrimMBVH*, CVector<CBrdfCache::CVertexCache>*, CAreaLightSquare&, CNoCulling&, CAreaLightSquare&, CBrdfLoop::CVtxSmpInfo const&, CBrdfLdSampler&) ()
#2  0x0000000000eb52ac in void CBrdfLoop::illuminate_t<CAreaLightSquare, CAreaLightSquare, CBrdfLdSampler>(unsigned int, CBrdfLdSampler&, CVector<CBrdfCache::CVertexCache>*, CAreaLightSquare&, CAreaLightSquare&, unsigned int, CPrimMBVH*) ()

在没有行数,无论我做什么都没有调试信息。我正在使用G 4.4.5编译,并使用GNU GDB(GDB)Fedora进行调试(7.1-34.fc13)。

我很困难,调试非常困难,除了printf ...这是我正在使用的版本的已知问题,我可以做什么?

更新:使用GCC/GDB的最新版本,没问题。似乎是GCC/GDB错误。

我建议使用-g3符号获取详细的调试信息。这将产生完整的代码级信息,可用于调试流程。