【问题标题】:Debug exec works fine but normal one segfaults [closed]Debug exec 工作正常但正常的一个段错误[关闭]
【发布时间】: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

其他时候。这让我又有点困惑了…… 但问题出在其他地方……

【问题讨论】:

标签: c++ debugging gcc gdb segmentation-fault


【解决方案1】:

尝试在 valgrind 下运行,这应该会给你一些线索

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多