Bu sayfa, LLDB kullanarak ayrıntılı bilgi verir göz önünde bulundurun. Uygulama geliştirme için bkz. Uygulamanızda hata ayıklama Bu makale Android Studio GUI'nin (LLDB'ye göre) nasıl kullanılacağını açıklar.
GDB artık desteklenmemektedir veya sağlanmamaktadır. GDB'den LLDB'ye geçiş yapıyorsanız büyük ihtimalle LLDB Eğiticisi. Uzman bir GDB kullanıcısıysanız GDB'den LLDB'ye komut eşlemesi geçiş sırasında oldukça faydalıdır.
Ön koşullar
Hata ayıklayıcı kullanmak için:
- Derleme ortamını normal
envsetup.sh
komutuyla kurun. - Derleme sırasında kullandığınız
lunch
komutunu çalıştırın. Öğle yemeği öğesini hata ayıklamakta olduğunuz cihazla tam olarak eşleşmelidir. Öğle yemeği yemeği bağlı cihazla eşleşmezse formla ilgili bir hata 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 Ortam oluşturun.
İkili programda hata ayıklama
Makinenizde derlediğiniz bir ikili programda hata ayıklamak için öncelikle ikili programı cihaza kopyalamanız gerekir. ve hata ayıklayıcıyı başlatın. Örnek:
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ıklayın
Çalışan bir uygulamaya veya yerel arka plan programına bağlanmak için şunu kullanın:
PID ile lldbclient.py
. Örneğin, PID kullanarak işlemdeki hataları ayıklamak için
1234 olarak ayarlarsanız ana makinede şu komutu çalıştırın:
lldbclient.py -p 1234
Komut dosyası, bağlantı noktası yönlendirmeyi ayarlar ve hata ayıklayıcıyı şu cihazda başlatır: sembolleri bulmak için yapılandırır ve ana makineyi uzaktan hata ayıklama koçanına bağlamanız gerekir.
Yerel işlem başlangıcında hata ayıklama
Başlangıçta işlemde hata ayıklamak için -r
ile lldbclient.py
kullanın
seçeneğini belirleyin. Örneğin, ls /bin
hatalarını ayıklamak için ana makinede şu komutu çalıştırın:
lldbclient.py -r /system/bin/ls /bin
Ardından, hata ayıklayıcının istemine continue
yazın.
Uygulama başlatmada hata ayıklama
Bazen bir uygulamayı başlatırken (ör. kilitlenme olduğunda) hata ayıklamak isteyebilirsiniz
ve kilitlenmeden önce ne olduğunu görmek için kodda adım adım ilerlemek istiyorsunuz.
Ekleme bazı durumlarda işe yarar ancak diğer durumlarda
çünkü uygulama siz eklemeden önce kilitlenir. İlgili içeriği oluşturmak için kullanılan
logwrapper
yaklaşım (strace
için kullanıldı)
her zaman işe yaramaz çünkü uygulamada
bir bağlantı noktası açma izinlerini alır ve lldbserver
bu izinleri devralır
olur.
Uygulama başlangıcında hata ayıklamak için Ayarlar'daki geliştirici seçeneklerini kullanarak Java hata ayıklayıcısının eklenmesini beklemesine neden olur:
- Ayarlar > Geliştirici seçenekleri > Hata ayıklama uygulamasını, ardından uygulamanızı listeden seçin, ardından Hata ayıklayıcıyı bekle'yi tıklayın.
- Uygulamayı başlatmak için başlatıcıdan veya komut satırını kullanın:
adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
. - Uygulamanın yüklenmesini ve uygulamanın yüklendiğini belirten bir iletişim kutusunun görüntülenmesini bekleyin hata ayıklayıcı bekleniyor.
lldbserver
/lldbclient
normal olarak ekle, ayarla belirleyip işleme devam edin.
Uygulamanın çalışmasına izin vermek için Java Debug Wire Protocol (JDWP) ekleyin Java Debugger (jdb) gibi hata ayıklayıcı:
adb forward tcp:12345 jdwp:XXX # (Where XXX is the PID of the debugged process.)
jdb -attach localhost:12345
Kilitlenen uygulama veya işlemlerde hata ayıklama
Kilitlenen işlemlerin debuggerd
tarafından askıya alınmasını istiyorsanız aşağıdaki işlemleri yapabilirsiniz:
hata ayıklayıcı eklemek, uygun özelliği ayarlamak için:
- 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 önceki sürümler
.adb shell setprop debug.db.uid 999999
Her zamanki kilitlenme çıktısının sonunda, debuggerd
kopyalama ve yapıştırma işlevini sağlar
logcat'te hata ayıklayıcının kilitlenen işleme nasıl bağlanacağını gösteren talimatlar.
VS Code ile hata ayıkla
LLDB, şurada hata ayıklama platform kodunu destekler: Visual Studio Kodu. Kontrol etmek ve kontrol etmek için LLDB CLI arayüzü yerine VS kod hata ayıklayıcı ön ucunu kullanabilirsiniz Cihazlarda çalışan yerel kodda hata ayıklama
Hata ayıklama için VS Kodunu kullanmadan önce CodeLLDB uzantısına ekleyin.
VS kodunu kullanarak kodda hata ayıklamak için:
- Çalışması için gereken tüm derleme yapılarının (simgeler gibi)
lldbclient.py
veyalldbclient.py
mevcut. - VS Code'da, bir komut çalıştırmak için Ctrl+Üst Karakter+P tuşlarına basın, Debug:
Yapılandırma Ekle... seçeneğini tıklayın, ardından LLDB'yi seçin.
Bu işlem bir
launch.json
dosyası 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
, bu nedenle aşağıdaki gibi bir yapılandırma olduğuna dikkat edin:"configurations": [ // #lldbclient-generated-begin // #lldbclient-generated-end ]
lldbclient.py
, yapılandırmanın nereye yazılacağını algılamak için bu yorumları kullanır. Varsa ise açıklama satırlarını diğer yapılandırmalardan sonra sona ekleyin. envsetup.sh
ve belgelerinizin bulunduğu terminalde aşağıdaki komutu çalıştırın:lunch
: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
adresine yazar ve çalıştırmaya devam eder. Bu beklenen bir durumdur.lldbclient.py
programını sonlandırmaz. Şu durumda:--vscode-launch-file
kısmını atlayın. Komut dosyası, oluşturacağınız JSON snippet'ini yazdırır.launch.json
içine manuel olarak kopyalayıp yapıştırmanız gerekiyor.İşaretlerin ayrıştırılma şeklinden dolayı mevcutsa
-r
işareti son işaret olmalıdır kontrol edebilirsiniz.- Çalıştır ve Hata Ayıklama kenar çubuğunu açın. Yeni yapılandırma,
hata ayıklayıcı listesi. Hata Ayıklamayı Başlat (F5) tuşuna basın. Hata ayıklayıcı şundan sonra bağlanmalıdır:
10-30 saniye.
Çalıştır ve Hata Ayıklama görünümünde yeni yapılandırma görünmüyorsa pencereyi aşağıdaki kodla yeniden yükleyin hata ayıklayıcı listesini yenileyin - Ctrl+Üst Karakter+P tuşlarına basın ve
reload window
. - Hata ayıklama işlemini tamamladığınızda,
lldbclient.py
ve Enter tuşuna basaraklldbclient.py
programı. Komut dosyasının sonraki çalıştırmaları yapılandırmayı oluşturur#lldbclient-generated
yorum arasında manuel olarak değil, eski içeriğin yerine bunları manuel olarak kaldırmanız gerekir.
Oluşturulan başlatma yapılandırmasına özel özellikler eklemek için
--vscode-launch-props
işareti. Örnek:
lldbclient.py --setup-forwarding vscode-lldb \
--vscode-launch-props \
'{"initCommands" : ["script print(\"Hello\")"], "preLaunchTask" : "Build"}' \
...
.
Örnek özellikler, hata ayıklamadan önce VS Code'un 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. Daha fazla
mevcut mülklere genel bakış
VS Code belgelerinde ve
CodeLLDB uzantısına sahiptir.