Bu sayfa, işletim sistemi geliştirme için LLDB veya GDB'yi kullanmayı ayrıntılarıyla anlatır. Uygulama geliştirme için, Android Studio GUI'nin (LLDB'ye dayalı) nasıl kullanılacağını açıklayan bunun yerine uygulamanızda hata ayıklama bölümüne bakın.
GDB kullanımdan kaldırıldı ve yakında kaldırılacak. 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, geçiş yaparken GDB'den LLDB'ye komut haritası çok yardımcı olur.
Önkoşullar
Hata ayıklayıcı kullanmak için:
- Her zamanki
envsetup.sh
komutuyla derleme ortamını ayarlayın. - İnşa ederken kullandığınız
lunch
komutunu çalıştırın.
Ortamınızı ayarlama konusunda daha fazla yardım için, bkz. Ortam kurulumu .
Çalışan uygulamalarda veya işlemlerde hata ayıklama
Çalışan bir uygulamaya veya yerel arka plan programına bağlanmak için bir PID ile gdbclient.py
kullanın. Örneğin, işlemin hatalarını PID 1234 ile ayıklamak için bunu ana bilgisayarda çalıştırın:
gdbclient.py -p 1234
Komut dosyası bağlantı noktası iletmeyi ayarlar, aygıtta uygun uzaktan hata ayıklama saplamasını başlatır, ana bilgisayarda hata ayıklayıcıyı başlatır, onu sembolleri bulmak için yapılandırır ve onu uzak hata ayıklama saplamasına bağlar.
Yerel işlem başlangıcında hata ayıklama
Bir işlemin hatalarını başlarken ayıklamak için gdbclient.py
-r
seçeneğiyle birlikte kullanın. Örneğin, ls /bin
'de hata ayıklamak için bunu ana bilgisayarda çalıştırın:
gdbclient.py -r /system/bin/ls /bin
Ardından, hata ayıklayıcının istemine continue
et yazın.
Uygulama başlangıcında hata ayıklama
Bazen bir uygulamada hata ayıklamak istersiniz, örneğin bir kilitlenme olduğunda ve çökmeden önce ne olduğunu görmek için kodu adım adım ilerlemek istersiniz. Ekleme bazı durumlarda işe yarar, ancak diğer durumlarda uygulama siz ekleyemeden çöktüğü için imkansızdır. logwrapper
yaklaşımı ( strace
için kullanılır) her zaman çalışmaz çünkü uygulamanın bir bağlantı noktası açma izni olmayabilir ve gdbserver
bu kısıtlamayı devralır.
Uygulama başlangıcında hata ayıklamak için, uygulamaya bir Java hata ayıklayıcının eklenmesini beklemesi talimatını vermek için 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 çalıştırmak için 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ı beklediğini bildiren bir iletişim kutusunun görünmesini bekleyin.
-
gdbserver
/gdbclient
normal şekilde ekleyin, kesme noktaları ayarlayın, 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
Hata ayıklayıcı ekleyebilmeniz için hata debuggerd
kilitlenen 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
adb shell setprop debug.debuggerd.wait_for_gdb true
- Android 6.0 Marshmallow ve daha düşük
adb shell setprop debug.db.uid 999999
Normal kilitlenme çıktısının sonunda, debuggerd
, hata ayıklayıcının kilitlenen sürece nasıl bağlanacağını gösteren logcat'te kopyala ve yapıştır yönergeleri sağlar.
Semboller olmadan hata ayıklama
32-bit ARM için, sembolleriniz yoksa, gdb
hangi komut setinin söküleceğini belirleyemez (ARM veya Thumb). Sembol bilgisi eksik olduğunda varsayılan olarak seçilen komut setini belirtmek için aşağıdaki özelliği ayarlayın:
set arm fallback-mode arm # or thumb
VS Koduyla Hata Ayıklama
LLDB, Visual Studio Code üzerinde platform kodunda hata ayıklamayı destekler. Cihazlarda çalışan yerel kodu kontrol etmek ve hata ayıklamak için LLDB CLI arabirimi 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 kullanarak kodda hata ayıklamak için:
-
gdbclient.py
veyalldbclient.py
çalıştırmak için gereken tüm yapı yapılarının (simgeler gibi) mevcut olduğundan emin olun. - Aşağıdaki komutu çalıştırın:
lldbclient.py --setup-forwarding vscode-lldb ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...
Bu, bir JSON nesnesi yazdırır ve
lldbclient.py
çalışmaya devam eder. Bu bekleniyor;lldbclient.py
programını öldürmeyin.-r
bayrağı, araç tarafından bayrakların nasıl ayrıştırıldığına bağlı olarak mevcutsa, son bayrak olmalıdır. - VS Kodundaki hata ayıklama sekmesinde, konfigürasyon ekle öğesini ve ardından LLDB: Özel Başlatma öğesini seçin. Bu, bir
launch.json
dosyası açar ve bir listeye yeni bir JSON nesnesi ekler. - Yeni eklenen hata ayıklayıcı yapılandırmasını silin.
-
lldbclient.py
tarafından yazdırılan JSON nesnesini kopyalayın ve az önce sildiğiniz nesneye yapıştırın. Değişiklikleri kaydedin. - Hata ayıklayıcı listesini yenilemek üzere pencereyi yeniden yüklemek için Ctrl+Shift+P tuşlarına basın ve
reload window
yazın. - Yeni hata ayıklayıcı yapılandırmasını seçin ve çalıştır'a basın. Hata ayıklayıcı 10 ila 30 saniye sonra bağlanmalıdır.
- Hata ayıklamayı bitirdiğinizde,
lldbclient.py
çalıştıran terminale gidin velldbclient.py
programını sonlandırmak için Enter tuşuna basın.