2012-10-15 29 views
9

:Hiçbir semboller/Xcode dış kütüphane için kaynak 4 Benim uygulama kitaplığı için kaynak kodunu göremiyorsa

  • Bunu kütüphanedeki yönteminde "tanımına atla" Eğer XCode .h dosyasına beni alır "ayıklarken göster sökme" emin yaptık enter image description here
  • kontrolsüz: ama hata ayıklama, hiçbir kaynak kodunu görebilir ve konuşma-yığının en kütüphanesi için eksik olduğunda
  • hiçbir .cpp meslektaşı olduğunu söylüyor

Kütüphaneyi DEBUG olarak kurdum ve daha sonra üstbilgileri + .a dosyasını bir SDK dizinine paketledim. Öyleyse, debug dosyalarını ya SDK dizinine de kopyalamam ya da başvurumu nereye yapacağımı söylemem gerek. Ben de nasıl yapacağımı bilmiyorum.

Açıklamak gerekirse, uygulama projem, kitaplık projesine yalnızca bir .a dosyaları ve başlık dirsleri için bir başvuru kaynağı sağlamaz. Bunun nedeni, kütüphane projesinin CMake tarafından oluşturulduğu ve bunu değiştirmek istemediğimdir.

+0

Kaynak ayıklama makinede derlenmiş mi? Kütüphane kütüphanesi hazırlanırken kaynak dosyaları aynı yerde bulunduklarında, hata ayıklama bilgileri ile derlenmişler mi? Kütüphaneyi kurarken derleyiciye hangi debug bayraklarını verdiniz? –

+0

Evet, aynı şekilde derlendi Mac ama bağımsız olarak ben sadece uygulama projesinin .a ve başlıkların nerede olduğunu söyleyin. Kaynak .cpp dosyaları taşınmıyor, ancak bir SDK oluşturmak için üstbilgileri ve .a dosyasını taşıdım; Mutlak yollar var mı? Xcode bu bilgileri nerede ve nasıl saklar? –

+0

Bunu hiç çözdünüz mü? Burada benzer bir sorum var: http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

cevap

8

Öncelikle, uygun hata ayıklama bilgilerini içerdiğini doğrulamak için statik kitaplığınızın .debug_str bölümünü kontrol etmelisiniz.

terminalde bu komutu çalıştırmayı deneyin:

xcrun dwarfdump /path/to/library.a | grep "\.m" 

Sen kaynağının bir demet görmelisiniz (.m) dosyası yolları yazdırılır. Teorik olarak, Xcode'un hata ayıklayıcısında durduğunuzda görüneceği yer burasıdır, bu yüzden buradaki yolların doğru olduğundan emin olun. Herhangi bir yol görmüyorsanız, kitaplığınızı oluştururken derleyiciye -g uygun bir hata ayıklama bayrağını geçirmeniz gerekir.

Yollar bir şekilde yanlışsa veya bunları başka bir konuma yönlendirmek istiyorsanız CMake içinde oluşturma işleminin bir parçası olarak bunları yapılandırabilirsiniz, örneğin bunları proje dizininize göre yapabilirsiniz. Bu hata ayıklama yollarını ayarlamak için CMake kullanan "Make gcc put relative filenames in debug information" 'a bakmayı deneyin.

+0

FYI this bir C++ uygulamasıdır ama ben sadece .cpp için cevabını değiştirdiğimi farz ediyorum. –

+0

"\ .m" veya "\ .cpp" ile çalıştırdığımda çıktı almam. Doğru olduğunu iki kez kontrol edebilir misin? Hata ayıklama lib'um 30Mb'de bir sürümle karşılaştırıldığında 650Mb'dir, bu yüzden hata ayıklama olarak inşa edildiğinden eminim! –

+0

Bu sorudaki herhangi bir gelişme var mı? Burada benzer bir soruna rastlıyorum: http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

İlgili konular