2009-03-04 82 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的錯,它是編譯器/調試器故障。