【问题标题】:Eclipse C++ debugging breaks in STLSTL 中的 Eclipse C++ 调试中断
【发布时间】:2010-10-11 05:20:39
【问题描述】:

我是使用 Eclipse 调试的新手。

我尝试调试我的应用程序以了解它的段错误。

问题是 Eclipse 在 STL 内部中断,这很烦人。

例如:我在我的源文件的第 134 行创建了一个断点,它工作正常 但是,如果我按 F6 进行“Step Over”,Eclipse/gdb 会在下一行使用 std::cout 的 basic_string 构造函数中中断。

对此有任何提示吗?是否有 Eclipse 等的配置选项?

【问题讨论】:

    标签: c++ eclipse debugging stl


    【解决方案1】:

    也许这就是它的段错误?

    【讨论】:

    • 不,它是由无限循环引起的堆栈溢出的段错误原因 - 我只是在搜索导致的行 ^^ 但要回答你的问题:循环从向我的应用程序发送 SIGINT 开始,但我得到了那些STL 在启动期间也会中断 - 似乎每次我使用 std::cout
    【解决方案2】:

    我没有使用过 Eclipse,但我确信有一个“堆栈回溯”或“调用堆栈”视图,您可以使用它来查看在 STL 代码中结束的调用链。

    【讨论】:

      【解决方案3】:

      如果代码经过优化,那么它可能会在 stl 中中断。尝试使用调试模式进行编译,它可能会有所帮助。

      【讨论】:

      • 另一件事是它本身可能会出现 sigfaulting。尝试查看调用 stl 函数的代码。堆栈跟踪应该会有所帮助。
      【解决方案4】:

      鉴于信息有限,这就是我想到的,

      1. 进入 (F5) 而不是 跨步 (F6) 定位 这正在发生。
      2. 如果这样 不行,升级CDT到最新 版本,然后重试。
      3. 如果这也不起作用,请尝试使用 gdb 没有 Eclipse。
      4. 最后一个选项, 输入一堆 cerr 输出。 注意 cerr (未缓冲)不是 cout。

      如果这些都不起作用,请发布更多详细信息。

      【讨论】:

        【解决方案5】:

        我有类似的问题。这是关于内联函数(stl cuases)。

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

        您可能还想关闭优化。

        附:我不够清楚:这不是 Eclipse 的错,而是编译器/调试器的错。

        【讨论】:

          猜你喜欢
          • 2013-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-05
          • 2010-12-16
          相关资源
          最近更新 更多