Bu sayfada işletim sistemi geliştirme için LLDB kullanımı ayrıntılarıyla anlatılmaktadır. Uygulama geliştirme için, Android Studio GUI'sinin (LLDB'ye dayalı) nasıl kullanılacağını açıklayan uygulamanızda hata ayıklama bölümüne bakın.
GDB artık desteklenmiyor veya sağlanmıyor. GDB'den LLDB'ye geçiş yapıyorsanız muhtemelen LLDB Eğitimini okuyarak başlamalısınız. Uzman bir GDB kullanıcısıysanız, GDB'den LLDB'ye komut haritası geçiş sırasında çok faydalıdır.
Önkoşullar
Hata ayıklayıcıyı kullanmak için:
- Derleme ortamını her zamanki
envsetup.sh
komutuyla ayarlayın. - Oluştururken kullandığınız
lunch
komutunun aynısını çalıştırın. Öğle yemeği öğesinin hata ayıkladığınız cihazla tam olarak eşleşmesi gerektiğini unutmayın. Öğle yemeği öğesi bağlı cihazla eşleşmiyorsa formda bir hata mesajı alırsınız:You used the wrong lunch: TARGET_PRODUCT (aosp_arm64) does not match attached device (xyzabc)
- Cihazınızı makineye bağlayın.
Ortamınızı ayarlama konusunda daha fazla yardım için bkz . Ortamı ayarlama .
İkili dosyada hata ayıklama
Makinenizde oluşturduğunuz ikili dosyanın hatalarını ayıklamak için önce ikili dosyayı cihaza kopyalamanız ve ardından hata ayıklayıcıyı başlatmanız gerekir. Örneğin:
adb push test.exe /data/local/tmp/test.exe
lldbclient.py --port 5038 -r /data/local/tmp/test.exe
Çalışan uygulamalarda veya işlemlerde hata ayıklama
Çalışan bir uygulamaya veya yerel arka plan programına bağlanmak için lldbclient.py
bir PID ile kullanın. Örneğin, işlemde PID 1234 ile hata ayıklamak için ana bilgisayarda şunu çalıştırın:
lldbclient.py -p 1234
Komut dosyası bağlantı noktası iletmeyi ayarlar, cihazda uygun uzaktan hata ayıklama saplamasını başlatır, ana bilgisayarda hata ayıklayıcıyı başlatır, sembolleri bulacak şekilde yapılandırır ve onu uzaktan hata ayıklama saplamasına bağlar.
Yerel işlem başlangıcında hata ayıklama
Bir işlem başlarken hata ayıklamak için lldbclient.py
-r
seçeneğiyle birlikte kullanın. Örneğin, ls /bin
hata ayıklamak için ana bilgisayarda şunu çalıştırın:
lldbclient.py -r /system/bin/ls /bin
Ardından, hata ayıklayıcının isteminde continue
komutunu girin.
Uygulama başlangıcında hata ayıklama
Bazen bir uygulamada hata ayıklamayı başlarken yapmak istersiniz (örneğin, bir kilitlenme olduğunda ve kilitlenmeden önce ne olduğunu görmek için kodda adım adım ilerlemek istersiniz). Ekleme bazı durumlarda işe yarar, ancak diğer durumlarda uygulama siz eklemeden önce çöktüğü için imkansızdır. logwrapper
yaklaşımı ( strace
için kullanılır) her zaman işe yaramaz çünkü uygulamanın bir bağlantı noktası açma izni olmayabilir ve lldbserver
bu kısıtlamayı devralır.
Uygulama başlangıcında hata ayıklamak için, uygulamaya bir Java hata ayıklayıcısının eklenmesini beklemesi talimatını vermek üzere Ayarlar'daki geliştirici seçeneklerini kullanın:
- Ayarlar > Geliştirici seçenekleri > Hata ayıklama uygulamasını seçin'e gidin ve listeden uygulamanızı seçin, ardından Hata ayıklayıcıyı bekle 'yi tıklayın.
- Başlatıcıdan veya komut satırını kullanarak uygulamayı başlatın:
adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
- Uygulamanın yüklenmesini ve uygulamanın bir hata ayıklayıcıyı beklediğini bildiren bir iletişim kutusunun görünmesini bekleyin.
-
lldbserver
/lldbclient
normal şekilde ekleyin, kesme noktalarını ayarlayın ve ardından işleme devam edin.
Uygulamanın çalışmasına izin vermek için Java Hata Ayıklayıcı (jdb) gibi bir Java Hata Ayıklama Tel Protokolü (JDWP) hata ayıklayıcı ekleyin:
adb forward tcp:12345 jdwp:XXX # (Where XXX is the PID of the debugged process.)
jdb -attach localhost:12345
Kilitlenen uygulamalarda veya işlemlerde hata ayıklama
Bir hata ayıklayıcı ekleyebilmeniz için debuggerd
çöken işlemleri askıya almasını istiyorsanız uygun özelliği ayarlayın:
- Android 11'den sonra
adb shell setprop debug.debuggerd.wait_for_debugger true
- Android 11 ve önceki sürümler
adb shell setprop debug.debuggerd.wait_for_gdb true
- Android 6.0 Marshmallow ve daha düşük
adb shell setprop debug.db.uid 999999
Olağan kilitlenme çıktısının sonunda debuggerd
, logcat'te hata ayıklayıcının çöken işleme nasıl bağlanacağını gösteren kopyalama ve yapıştırma talimatlarını sağlar.
VS Code ile hata ayıklama
LLDB, Visual Studio Code'da platform kodunda hata ayıklamayı destekler. Cihazlarda çalışan yerel kodu kontrol etmek ve hata ayıklamak için LLDB CLI arayüzü yerine VS Code hata ayıklayıcı ön ucunu kullanabilirsiniz.
Hata ayıklama için VS Code'u kullanmadan önce CodeLLDB uzantısını yükleyin.
VS Code'u kullanarak kodda hata ayıklamak için:
-
lldbclient.py
veyalldbclient.py
çalıştırmak için gereken tüm yapı yapılarının (semboller gibi) mevcut olduğundan emin olun. - VS Code'da, bir komutu çalıştırmak için Ctrl+Shift+P tuşlarına basın, Debug: Add Configuration... öğesini arayın ve ardından LLDB öğesini seçin. Bu,
launch.json
dosyasını açar ve listeye yeni bir JSON nesnesi ekler. - Yeni eklenen hata ayıklayıcı yapılandırmasını iki yorum satırıyla değiştirin -
// #lldbclient-generated-begin
ve// #lldbclient-generated-end
, böylece yapılandırma listeniz şu şekilde görünecektir:"configurations": [ // #lldbclient-generated-begin // #lldbclient-generated-end ]
lldbclient.py
yapılandırmanın nereye yazılacağını tespit etmek için bu yorumları kullanır. Listede başka öğeler varsa, yorum satırlarını diğer yapılandırmalardan sonra sona ekleyin. -
envsetup.sh
velunch
çalıştırdığınız terminalde aşağıdaki komutu çalıştırın:lldbclient.py --setup-forwarding vscode-lldb \ --vscode-launch-file LAUNCH_JSON_PATH \ ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...
lldbclient.py
oluşturulan yapılandırmayılaunch.json
yazar ve çalışmaya devam eder. Bu bekleniyor;lldbclient.py
programını sonlandırmayın.--vscode-launch-file
atlarsanız komut dosyası, manuel olarak kopyalayıplaunch.json
yapıştırmanız gereken JSON pasajını yazdıracaktır.-r
bayrağı, bayrakların araç tarafından nasıl ayrıştırıldığına bağlı olarak mevcutsa son bayrak olmalıdır. - Çalıştır ve Hata Ayıkla kenar çubuğunu açın; yeni yapılandırma hata ayıklayıcı listesinde görünmelidir. Hata Ayıklamayı Başlat'a (F5) basın. Hata ayıklayıcı 10 ila 30 saniye sonra bağlanmalıdır.
Yeni yapılandırma Çalıştır ve Hata Ayıkla görünümünde görünmüyorsa, hata ayıklayıcı listesini yenilemek için pencereyi yeniden yükleyin - Ctrl+Shift+P tuşlarına basın ve
reload window
yazın. - Hata ayıklamayı tamamladığınızda,
lldbclient.py
dosyasını çalıştıran terminale gidin velldbclient.py
programını sonlandırmak için Enter tuşuna basın. Komut dosyasının sonraki çalıştırmaları#lldbclient-generated
yorumlar arasında yapılandırmayı oluşturacak ve eski içerikleri değiştirecektir; bunları manuel olarak kaldırmanıza gerek yoktur.
Oluşturulan başlatma yapılandırmasına özel özellikler eklemek için --vscode-launch-props
bayrağını kullanabilirsiniz. Örneğin:
lldbclient.py --setup-forwarding vscode-lldb \
--vscode-launch-props \
'{"initCommands" : ["script print(\"Hello\")"], "preLaunchTask" : "Build"}' \
...
Örnek özellikler, VS Code'un hata ayıklamadan önce Build
adlı bir görevi çalıştırmasını sağlar ve komut dosyası tarafından oluşturulan adımlara yeni bir hata ayıklama başlatma adımı ekler. Kullanılabilir özelliklere ilişkin bir genel bakışı VS Code belgelerinde ve CodeLLDB uzantısının Kullanıcı Kılavuzunda bulabilirsiniz.