2009-03-04 67 views
2

我是使用Eclipse进行调试的新手。Eclipse C++在STL中调​​试中断

我尝试调试我的应用程序以知道段错误的位置。

问题在于Eclipse在STL内部中断,这非常烦人。

例如:我在第134行的源文件中创建了一个断点,这很好地工作了 但是如果我按F6查找“Step Over”,Eclipse/gdb将在basic_string构造函数中使用std :: COUT。

对此有何暗示?是否有Eclipse或类似的配置选项?

回答

1

也许这就是它错位的地方?

+0

没有它seg段导致堆栈溢出导致无限循环 - 即时通讯只是寻找导致行^^ 但回答你的问题:循环开始发送SIGINT到我的应用程序,但我得到那些STL休息也在启动 - 似乎每次我使用std :: cout – 2009-03-04 09:38:35

0

我还没有使用Eclipse,但我确定有一个“堆栈回溯”或“调用堆栈”视图,您可以使用它查看以STL代码结尾的调用链。

+0

是的,有这样的观点 – 2009-03-04 10:27:52

+0

所以,这解决了你的问题。对? – flodin 2009-03-04 15:07:13

0

如果代码被优化,那么它可能会破坏stl。尝试使用调试模式进行编译,这可能会有所帮助。

0

鉴于有限的信息,这是想到什么,

  1. 步入(F5),而不是 跨过(F6),可找到 这种情况正在发生。
  2. 如果这样做 不起作用,请将CDT升级到最新的 版本,然后重试。
  3. 如果这不起作用,请尝试在没有Eclipse的情况下使用gdb 。
  4. 最后一个选项 引起一堆cerr输出。 注意cerr(没有缓冲)不是 cout。

如果这个不工作发布更多信息。

0

我有类似的问题。这是关于内联函数(哪些是应用程序)。

您需要添加一些编译器标志来生成一些额外的调试信息。如果您使用gcc,请参阅-g *标志(-gdb用于gdb调试器遵从性,它为您提供了对该类型调试器最恰当的支持)。

此外,你可能想关闭优化。

P.s.我还不够清楚:这不是Eclipse的错,它是编译器/调试器故障。