2009-09-03 28 views
9

我有一個使用Xcode 3.2在Mac OS X 10.5上構建的項目。當我使用GCC 4.2進行調試構建並命中斷點時,Xcode調試器通常顯示局部變量信息。如果讓我選擇LLVM GCC 4.2或LLVM鐺,當我打了斷點,本地符號不可用,和GDB說無符號在目前情況下「自我」,如果我嘗試打印或任何其他地方的象徵。在所有情況下生成調試信息選項已設置。 Debug配置設置爲$(NATIVE_ARCH)和10.5 SDK,僅生成活動架構選項已設置。當GDB啓動時,我可以看到它被配置爲x86_64-apple-darwin。我必須失去一些明顯的東西。如何在使用LLVM編譯器時使GDB顯示本地符號?Xcode 3.2 + LLVM =調試時沒有本地符號

回答

9

對於那些不熟悉,更多的細節,以cdespinosa的答案,這工作對我來說,和我投了。

  1. 從Xcode的菜單中選擇項目>編輯項目設置...
  2. 選擇Build標籤
  3. 在搜索框中鍵入「優化級別」,選擇字段,然後選擇無。
  4. 接下來搜索「調試信息格式」,選擇該字段,然後選擇「DWARF」或「帶有dSYM的DWARF」。

本來把這個意見,他的職位,如果我有PRIVS。 ;)

這花費了我一些嚴重的時間,並且是坦率地說的那種草率的對蘋果的一部分,但總的來說,我不能抱怨。

0

來自FSF的GDB只添加了對JIT代碼的支持,非常的recently

我不知道Apple提供的GDB是否支持它(你是否得到了合理的堆棧跟蹤?)。如果是這樣,這種支持(顯然)是不完整的。

+0

是什麼讓你覺得這與JIT有什麼關係,或者Apple會發佈一個gdb,但它不能完全與他們編寫的編譯器一起工作? – user57368 2009-09-04 03:01:54

+0

堆棧看起來正確,顯示我所有的功能。這是本地變量缺失。 – glebd 2009-09-04 09:29:09

+0

但是llvm可以生成本地代碼,而不是字節碼。 – osgx 2010-02-08 17:01:53

4

這可能有所幫助。嘗試關閉項目構建選項中的「鏈接時優化」。這解決了我缺少調試符號的問題。

事實上,這固定了我與Clang一起發生的一系列奇怪的問題。我會說這個功能的使用尚處於邊緣。

5

確保您正在構建矮人符號並且不進行優化。 llvm是一個新的後端,並不是所有優化的codegen都已經連接到調試符號生成。

0

我是有這個問題,並通過把旁邊打勾菜單項解決了這個問題:「項目>設置活動生成配置>調試」。以前,選擇了「發佈」選項。從那時起,當地人開始在調試器中顯示出我的項目。