2013-08-22 90 views
4

我有一個Xcode項目,當我調試時不會顯示C++ std :: strings。這非常令人沮喪,因爲我不得不在LLDB控制檯窗口中逐個打印語句或逐個輸出每個字符,這非常耗時且難以閱讀。Xcode項目不會在調試器中顯示std :: string

使用同一個項目的其他人都有同樣的問題,其他項目都沒有看到這個問題,所以我會認爲這是某種項目設置。我正在調試,並沒有優化打開,所以我已經消除了這個問題。我還比較了工作項目和具有這個問題的項目之間的項目設置,並且它們看起來每個方面都是相同的。

這裏的輸出我得到的樣品,*_M_p在這個例子中是正確的,該字符串的第一個字符是一個問號:

enter image description here

這裏就是我在調試控制檯如果得到我檢查字符串一個字符時間:

enter image description here

我聽說從LLVM切換回GDB可能會解決這個問題,但GDB給我調試某些數據類型的其他問題,所以在這種情況下我只會遇到新的問題。

+1

你嘗試'打印map_environment.c_str()'? –

+0

工作!這很有幫助,但我真的很想看看觀看窗口向我展示字符串。謝謝! –

+0

然後,您只需強制觀察窗口向您顯示string.c_str()而不是字符串。 –

回答

3

我的同事找到了解決方法:在方案設置中關閉Guard Malloc選項。

  • 點擊出現該問題
  • 點擊編輯方案
  • 點擊診斷
  • 取消選中「啓用衛隊的malloc」選項的計劃。

現在std :: strings應該顯示出來。我們不知道爲什麼會出現這種情況,它可能是Xcode中的一個錯誤,但我認爲它會在前一段時間被發現。此外,這已在多個項目上進行了測試,並且啓用Guard Malloc總是導致std :: strings在調試器中無法正確顯示。

0

試試這個LLDB命令

exp -f s -- myString 

你是在告訴LLDB顯示您的字符串格式爲C字符串

0

這可能不會造成樓主的問題表達,卻引起了我的:我使用的是Xcode 6.4,而大部分代碼都是用6.2構建的。切換到6.2使這些值在調試器中可見。

0

試試這個命令

PO string_name

相關問題