使用g ++进行std :: vector调试和发布构建

时间:2012-05-14 13:36:20

标签: c++ debugging stl g++

  

可能重复:
  GCC STL bound checking

g ++ STL中是否存在std:vector的自动调试版本,如果不是,我怎么能实现?

我想要的是在我的g ++调用中指定一个调试参数,例如:

g++ -D DEBUG_ main.cpp

当定义了这个参数时,我希望我的所有std :: vectors在访问元素时检查它们的边界,这是使用vector :: at()时的方式。

当省略参数时,我希望所有向量的行为都像使用普通[]运算符一样,这​​意味着边界检查没有“浪费”性能。

我听说VC ++就是这样做的。所以我的问题是如何使用g ++?

2 个答案:

答案 0 :(得分:7)

您想要的旗帜是-D_GLIBCXX_DEBUG

可以在以下位置找到libstdc ++的更多调试选项:

http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.mode

答案 1 :(得分:0)

在调试模式下,您可以进行其他断言和检查,但使用at()[]它始终在您身边。

at() - 抛出out_of_bounds异常,[] - 不要