【发布时间】:2012-03-01 16:41:33
【问题描述】:
我有以下代码:-
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
其他时候。这让我又有点困惑了…… 但问题出在其他地方……
【问题讨论】:
-
我在发布自己的问题后不久发现了这个绝妙的问题。然而似乎没有帮助。 stackoverflow.com/questions/1762088/…
-
尝试打印出obj的值。即 cout
标签: c++ debugging gcc gdb segmentation-fault