Debugging gcc gdb无调试信息

Debugging gcc gdb无调试信息,debugging,gdb,g++,symbols,Debugging,Gdb,G++,Symbols,我试图阻止g++内联模板函数,这会导致gdb缺少调试信息,比如局部变量,甚至是当前行号 实际上,我猜这与内联模板函数有关,因为这是唯一一种我无法访问调用堆栈中任何内容的情况 我已经在g++选项中尝试了所有可能的方法,例如: -DDEBUG -O0 -fno-inline -fno-implicit-inline-templates 甚至考虑在我的函数前面加上_属性_((noinline))而没有效果 我的呼叫堆栈看起来像 #0 CVector<CGatherColor>::ope

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

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

我已经在g++选项中尝试了所有可能的方法,例如:

-DDEBUG -O0 -fno-inline -fno-implicit-inline-templates
甚至考虑在我的函数前面加上_属性_((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*) ()
#0 CVector::operator[](this=0x9324480,index=1208)位于../utils/vector.h:28
#1 0x0000000000ee1d27在无符号int CBrdfLoop::trace_t(int,无符号int,CPrimMBVH*,CVector*,carelightsquare&,CNoCulling&,carelightsquare&,CBrdfLoop::CVtxSmpInfo const&,CBrdfLdSampler&)()
#2 0x0000000000eb52ac无效CBrdfLoop::Illumb_t(无符号整数、CBRDFLD采样器和、CVector*、CareAllightSquare和、CareAllightSquare和、无符号整数、CPrimMBVH*)()
这里没有行号,也没有调试信息。我正在使用g++4.4.5进行编译,并使用GNUGDB(gdb)Fedora(7.1-34.fc13)进行调试

我被卡住了,调试也很困难,除了printf,我别无选择。。。 这是我使用的版本的已知问题吗?我能做些什么吗


更新:使用最新版本的gcc/gdb,没有问题。似乎是一个gcc/gdb错误。

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

Captain:您使用-g吗?它没有列在您尝试的选项中,我正在使用-ggdb,这显然确保我有gdb的调试信息。。。以下是我的编译选项:
g++-c-DDEBUG-O0-fno-inline-fno-implicit-inline-templates-Wno-deprecated-ggdb-Wall-fPIC-MD-msse2