gcc gdb没有调试信息

时间:2012-10-30 10:26:52

标签: debugging gdb g++ symbols

我试图阻止g ++内联模板化函数,这会导致gdb缺少调试信息,如局部变量甚至当前行号。

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

我已经尝试了g ++选项中的一切,例如:

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

甚至考虑使用__attribute __((noinline))为我的函数添加前缀无效。

我的callstacks看起来像

#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 bug。

1 个答案:

答案 0 :(得分:1)

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