gdb断点不会设置

时间:2016-08-03 03:38:50

标签: c++ debugging gdb breakpoints

我尝试使用gdb调试C ++代码。特别是,我想检查某个变量(粘度[j])是否不是NAN并且在某些范围内(eta_min和eta_max)。我使用以下代码执行此操作:

if (!crash)
    {
        if (viscosities[j]>=eta_min && viscosities[j]<=eta_max)
            {}
        else
            {
                std::cout<<"viscosities[j]: "<<viscosities[j]<<"  ";
                crash = true;
            }
    }

(我需要变量崩溃,因为循环的代码部分,它在循环开始之前被初始化为0)。

在gdb中,我尝试使用以下命令设置断点:

break nz.cc:238

(第238行是cout语句之一) 但是,断点设置为第246行:

Breakpoint 3 at 0xaeeb09: file /home/lev/aspect/aspect/source/material_model/nz.cc, line 246. (2 locations)

并且编译器永远不会在第238行停止。我通过vi验证了行号并确保重建可执行文件。有人可以告诉我为什么会这样吗?提前谢谢!

UPD:通过在可执行编译期间禁用优化来解决

0 个答案:

没有答案