2011-10-22 50 views
4

我有我建立使用自動-REF-計數和獅子SDK的程序的程序OSX。這個程序在Snow Leopard中的表現並不像預期的那樣(一個視圖不會被加載,而打開一個文檔會掛起程序),所以我想在那裏調試它。但是因爲我無法在Snow Leopard下編譯它,所以我不知道該如何去做。調試雪豹,這是建立在獅子

所以我怎麼調試符號到GDB或者我可以在Xcode調試這個東西 - 有可能是一個遠程的方式或類似的東西?

+0

如何使用虛擬機? – Nasreddine

回答

1

您可以調試遠程通過gdbserver

snow-leopard$ gdbserver :10000 /path/to/exe 
lion$ gdb /path/to/exe 
(gdb) target remote snow-leopard:10000 

一個更簡單的方法是複製你的整個代碼,並建立本地目錄雪豹和調試GDB。即使你沒有在那裏建立,GDB仍應該能夠找到它需要的一切。

0

遺憾地說,我的研究表明,「G ++」在Snow Leopard上的編譯器不再放置有任何意義「廣發行」鏈接模塊中的符號。找到的唯一符號是爲使所有符號唯一而創建的化妝符號。下面是一個簡單的例子:

`_Z5DoSVCi', function, 0x151dd 
`_Z7SEBTrapv', function, 0x1383c 

老虎那些相同的符號是這樣的:

`_Z5DoSVCi' `DoSVC(int)', FUNCTION, 0x1394c 
`_Z7SEBTrapv' `SEBTrap()', FUNCTION, 0xf994 

「簽名」是什麼「廣發行」需要解決的事情,如:破emsvc.c:DoSVC 此外,由於Snow Leopard的「g ++」顯然不再包含鏈接模塊中的符號,因此您仍然必須擁有所有「對象套牌」,如emsvc.o。

我帶來了一個「G ++」上(基於英特爾)虎聯編譯的模塊到雪豹沒有對象甲板,和「GDB」是能夠完全處理它,包括設置斷點。顯然,「g ++」或連接器在Snow Leopard上沒有爲「gdb」生成適當的模塊。