0
当我尝试打印一个绝对有效的结构/变量时,总是遇到gdb崩溃。如果我尝试在gdb中调用另一个函数,它经常会崩溃。我发现只有当代码是C/C++混合时才会发生这种情况。C/C++混合编程:经常使用gdb分段故障
例如,
%> p anotherFunction()
Segmentation fault
这里是一个小例子,这是我的典型场景:
example.cc:
class foo(){
public void bar();
};
void foo::bar(){
int i=12345;
printf("%d", i);
}
foo * pfoo;
extern "C" call_foo(){
pfoo = new foo();
pfoo->bar();
}
的例子
,如果我停在printf和尝试执行“PI” gdb,它会导致崩溃。
请注意,这只是一个示例,请不要在示例中查找错误。这种崩溃发生在任何地方,但有时候一切正常。
我想这是因为我从C代码(本例中为call_foo)调试到C++代码和gdb有切换上下文的问题。
请帮助,如果你有任何想法。这真的影响了我的生产力很多:((...)
顺便说一句,我已经尝试过不同版本的gdb,似乎问题存在于每个版本包括最新的一个,我也尝试purify/valgrind来验证我程序和余did't看到任何错误的方案。
gdb的不同版本已经尝试过最新的一个。 – limi 2011-03-09 11:44:02
然后,我认为你应该获得/编译最新的GDB的调试信息,重现问题,获取堆栈跟踪等(假设你的GDB至少可以自己调试,如果不是你自己的应用程序)并填写一份针对GDB的错误报告。 GDB不应该崩溃,但是你的应用程序会出现错误。 – wilx 2011-03-09 11:51:11
是的,我认为这可能是现在唯一的方法。 – limi 2011-03-09 11:59:24