我有以下代码: -
void someFunc (someStruct* obj) {
cout << obj->some_member;
}
someFunc是我从一个我无法控制的库中获得的回调。如果我使用gdbon = true编译它,则生成的exec完全按照预期的方式工作。 另一方面,如果我编译它没有上面的标志,exec段错误。在gdb中打开core-dump显示了
obj=Variable "obj" is not available.
关于如何进一步缩小问题范围(或可能出错的问题)的任何想法?
编辑: - 嘿,原来这不是问题。在代码的后期有一个不安全的内存访问,在发布版本中(优化和所有内容)在gdb中出现在上面的代码行中是一个问题。 真正令人惊讶的是我试图这样做: -
void someFunc (someStruct* obj) {
if (obj==NULL) return;
cout<<"here1\n";
cout<<obj->some_member;
cout<<"here2\n"
}
这会随机导致
here1
有时和
here1
here2
其他一些时候。有点让我有点困惑...... 但问题出在其他地方......
答案 0 :(得分:1)
尝试在valgrind下运行,这应该会给你一些线索