2016-03-25 21 views
0

Harici bir derleme sistemi üzerinden C++ geliştirme için Xcode kullanıyorum. Xcode 6.2 (lldb 320.4.160) işlevini kullanırsam her şey iyi çalışır, kesme noktaları belirleyebilir ve vuruluyorlar - her şey güzel. Ancak, Xcode'un daha yeni bir sürümüne yükseltmek isterseniz, ör. 7.3 (lldb 350.0.21.3) Ayrılık noktalarım artık vurulmuyor. Şimdiye kadar yaptığım araştırma, yeni lldb'nin bazı sebeplerden dolayı kesme noktalarını belirleyemediğini söylüyor. Ben programın yürütülmesini durdurmak ve (lldb) breakpoint list yazın kezneden kaynak dosyamı lldb> v320.4.160 bulamıyor?

benim çıkış şuna benzer: sonunda

(pending)
Current breakpoints: 
    1: file = '/full/path/to/src/main.cpp',  line = 842, exact_match = 0, locations = 0 (pending) 
    2: file =  '/full/path/to/src/class.cpp', line = 383, exact_match = 0, locations = 0 (pending) 
    3: file = '/full/path/to/src/Homie.cpp', line = 12, exact_match = 0, locations = 0 (pending) 

bp doğru ayarlanmış olması olamayacağını göstermektedir. Şimdi breakpoint set --file main.cpp --line 842 aracılığıyla lldb bir kesme noktası ayarlarsanız ben hangi (lldb) breakpoint list şu çıktıyı veren bir kesme noktası olsun:

4: file = 'main.cpp', line = 12, exact_match = 0, locations = 1, resolved = 1, hit count = 0 
    4.1: where = TEST`::__cxx_global_array_dtor() + 29 at main.cpp:842, address = 0x000000010027130d, resolved, hit count = 0 

bu kesme noktası programı yürütme sırasında vurulduktan -

Ben denerseniz güzel şeyi Xcode 6.2 kullanarak aynı yürütülebilirdeki kesme noktalarını ayarlamak için hata ayıklayıcı, tam dosya yolunda bile kaynak dosyayı başarıyla bulabilir.

Yeni lldb sürümü kesme noktalarını doğru olarak nasıl ayarlayabilirim?

Teşekkürler!

cevap

0

Xcode, her zaman kaynağın tam yolunu kullanarak dosyayı & satır kesme noktalarını ayarlar. Xcode projeyi oluşturduğunda, "tam yol kaynağı" olduğundan ve derleyiciye (ve derleyicinin hata ayıklama bilgisinde yazdığı) sağladığından emin olabilir. Ancak bir dış yapı sistemi ile aynı olmayabilirler (örneğin, yapı sistemi karmaşık göreli yollardan veya symlinks vb. Yoluyla yola başvurabilir). Hata ayıklayıcı, tüm kaynak dosya yolları için yolları çözmez. Bu büyük projeler için çok pahalı. Bu yüzden, bunlar kesme yolunu tam yolla ayarlamaya uymuyorsa işe yaramaz.

(lldb) image lookup -va 0x000000010027130d 

Bir:

Sen ayıklayıcı senin main.cpp komutunu sonra (yukarıdaki örnekte 0x000000010027130d) yerin adresini bulma, kesme noktası ayarlamak ve çalıştırarak düşünüyor hangi yolu öğrenebilirsiniz çıkış hatları derleme birimi olacaktır arasında:

CompileUnit: id = {0x00000000}, file = "/tmp/hello-world.c", language = "c99" 

burada Xcode kesme noktası ayarlamak gördüğün aynı verilen tam yoludur. Eğer öyleyse, neyin yanlış gidebileceğini bilmiyorum, ama eğer değillerse, nedenini biliyorsunuz ve bu da onu düzeltmek yönünde size işaret edebilir.

+0

Evet, aslında sorun buydu. Hangi yolun aslında ikili olarak oluşturulduğunu öğrenmek için teşekkürler. Hata ayıklayıcı, hata ayıklayıcı tarafından çözümlenemeyen "full/path/to /./ src/main.cpp" ifadesini aradı. Makefile src yolunu değiştirdim ve şimdi iyi çalışıyor. – p0fi

İlgili konular