当我尝试打印绝对有效的结构/变量时,我总是遇到 gdb 崩溃。如果我试图在 gdb 中调用另一个函数,它经常会崩溃。我发现只有当代码是 C/C++ 混合时才会发生这种情况。
例如,
%> 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 处停止并尝试在 gdb 中执行“p i”,它会导致崩溃。
请注意这只是一个示例,请不要在示例中查找错误。这种崩溃无处不在,但有时一切正常。
我猜这是因为我从 C 代码(本例中的 call_foo)调试到 C++ 代码,而 gdb 在切换上下文时遇到了一些问题。
如果你有任何想法,请帮忙。它真的很影响我的工作效率:(....
顺便说一句,我已经尝试过不同版本的 gdb。似乎每个版本都存在问题,包括最新版本。我也尝试过 purify/valgrind 来验证我的程序,我没有看到程序有任何错误。
最佳答案
GDB 中的任何崩溃都是 GDB 中的错误。请在 GDB 中提交错误 bugzilla .
如果多个版本的 GDB 在您的示例中崩溃,问题可能出在您的编译器上(但即使这样 GDB 也不应崩溃)。
关于c++ - C/C++混合编程 : gdb segmentation fault frequently,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245204/