2011-02-08 21 views
13

Nexus One'ım için çekirdek hata ayıklaması yapmaya çalışıyorum ve http://bootloader.wikidot.com/android:kgdb'dan itibaren talimatları takip ediyorum. Birinin gerçekten bunu işe koyup koymadığını merak ediyordum? Ve herhangi biri, çekirdeğin hatalarını ayıklamak için KGDB'yi kullanmak için daha güncel bir çözüm geliştirdi mi?Android: Kernel Debugging ile KGDB

+2

Araçları çalışırken güzel ve bu işe yararsa harika olurdu, verilen bir çakışma sorununu çözme şansınız daha hızlı olabilir ve projeninizle –

+1

dikkatli kullanımından yararlanmaya devam edebilirsiniz. İlgili soru: [Android Kernel Debugging] (http : //stackoverflow.com/q/6697754/816008) –

cevap

2

Ben zaten Android Çekirdek Dev listesine bir soru soruldu ve hiçbir cevap var, ancak kgdb ve hata ayıklama ?: Özellikle http://groups.google.com/group/android-kernel/search?group=android-kernel&q=kgdb&qt_g=Search+this+group

hakkında mesajlar arşivler arama vermedi böylece bilirim, olabilir Bu yayına bakmak istiyorum:

  • http://wiki.ncl.cs.columbia.edu/wiki/AndroidVirt:Guides:Kernel_Debugging neyse, bu ilginç bir soru ve ben gerçekten bir şey bulmakta zorlanıyorum. Bazen IRC üzerinde atlamayı denemek isteyebilirsiniz (# android-dev veya freenode'da # android-root) ve bazı insanları işaretçiler için sormak (lütfen burada bulduklarınızı postalayın) ya da belki the xda-developers Android forums'dan isteyin.

  • 2

    Android'de KGDB hakkında bilgi ararken bu mesajı buldum, bu yüzden birkaç yaşında olmasına rağmen, Nexus 6'da bunu çalıştırmak için çalıştığım bazı çalışmalara bir bağlantı göndermeye değdiğini düşündüm .

    http://www.contextis.com/resources/blog/kgdb-android-debugging-kernel-boss/

    Bunun benzeri yanıt arayan başkasının yardımcı olur. geribildirim (teşekkürler tümü) aşağıdaki

    Düzenlendi

    :

    Ben this Accuvant blog dayalı bir UART ayıklama kablo yapmak zorunda Bu çalışma almak için. Bu, FTDI 3.3v temel koparma (Yazma sırasında SparkFun'dan temin edilebilir) ve 4 direnç (2 x 1K Ohm, 1 x 1.2K Ohm ve 1 x 100Ohm) içeren basit bir devre ve bir 4 elementli İpucu Halka-Halka-Kollu (TRRS) kulaklık jakı. Dirençler temelde 3.3v'yi telefonunuz için biraz daha güvenli bir şeye indirgemek için bir voltaj bölücü sağlıyor. Ses jakını devre kartınıza bağlı diğer ucunu takarak, ses altsistemi pinlerden birinin üzerindeki voltajı (~ 2.8V) algılar ve bu kablo üzerinden bir UART arabirimi sağlamayı bilir. FTDI koparma, USB üzerinden PC'nize takılır ve buradan minicom gibi bir terminal emülatörü üzerinden konsol mesajlarına erişebilirsiniz. Ancak, şimdi aynı mekanizma üzerinden bir seri arabiriminiz var ve bir KGDB bağlantısı için kullanabileceğimiz bu. Bu noktada, Nexus 6'nın seri sürücüsü (msm_serial_hs_lite.c) için KGDB'yi (özellikle atomik karakter G/Ç işlemlerini gerçekleştirme yeteneği) desteklemek için bazı nispeten küçük değişiklikler yapılması gerekir. Linux Kernel ana hat kodundan these changes portunu yükledim. Stephen Boyd adında MSM (Qualcomm) seri sürücüsü msm_serial.c'ye sıkı bir çalışma yapmıştı. Onun değişiklikleri burada bulunabilir veya Google'da "msm_serial: poll_ için destek ekle" yi arayın. Bağlantı noktası zor değildi ve kodum found on github olabilir.

    Bundan başka, N6'nız için özel bir çekirdek oluşturabilmeniz gerekir: google provides lots of information on.Daha sonra github repo'daki KGDB modifikasyonlarını içeren bir önyükleme görüntüsü oluşturmanız gerekir. Stok çekirdeğini https://developers.google.com/android/nexus/images'dan aldım, ayıkladım (abootimg -x kullanarak) ve daha sonra KGDB'nin yüklenmesini ve dizinime yönlendirilmesini sağlamak için özel çekirdim (zImage-dtb) ve ek komut satırı paramları ile yeniden yüklemek için aşağıdaki komutu kullandım liman şöyle: Ben, komut fastboot önyükleme boot.img kullanarak içine önyükleme bir adb kabuk açıp sonra komutunu kullanarak Android çekirdeğinde kesme noktası tetikleyebilecek oluşturulan benim boot.img ile

    abootimg -u boot.img -k zImage-dtb -c 'cmdline=console=ttyHSL0,115200,n8 kgdboc=ttyHSL0,115200 kgdbretry=4' 
    

    :

    echo -n g > /proc/sysrq-trigger 
    

    /proc/sysrq-tetikleyicisine erişmek için süper kullanıcı ayrıcalıklarına gereksinim duyduğunuz bütünlükten bahsetmeye değer. Kök var.

    Telefon durdu ve hata ayıklama kablonuz bağlıyken, ana bilgisayarınızdaki ARM için bir GDB sürümünü, sıkıştırılmamış çekirdeğiniz argüman olarak (örn. Arm-eabi-gdb ./vmlinux) başlatın. Not: Ubuntu 14.04 çalıştırıyorum ve AOSP kaynak kodumdaki 'prebuilts' dizininden arm-eabi-gdb kullanıyorum. Son olarak, aşağıdaki komutları girin:

    set remoteflow off 
    set remotebaud 115200 
    target remote /dev/ttyUSB0 
    

    Tüm derhal (sizin yazma/proc/sysrq-tetik üretilen bu) kgdb kesme içine ayrılmalıyız da bu varlık ve hata ayıklama başlayabilirsiniz.

    +0

    Bu, sorunun cevabını sağlamaz. Bir yazarın eleştirisini veya açıklamasını istemek için, gönderilerinizin altında bir yorum bırakın. Her zaman kendi gönderilerinize yorum yazabilirsiniz ve yeterli sayıda [ününüzü] aldıktan sonra (http://stackoverflow.com/help/whats-reputation) [herhangi bir yayına yorum yapabilir] (http://stackoverflow.com/help/privileges/comment). – Sufian

    +0

    Merhaba Sufian. Geri bildiriminiz için teşekkürler. OP iki soru sordu: 'Bu çalışmayı yapan var mı?' ve 'kernel hata ayıklamak için KGDB kullanmak için daha güncel bir çözüm var mı?' Bunu USB üzerinden çalıştıramadım (OP'nin bağlantısında atıfta bulunularak), ancak mevcut bir Android cihazında bir hata ayıklama kablosu kullanarak çalıştım ve bu yüzden ikinci sorudan memnun kaldım. Eğer katılmıyorsanız bilmek ister misiniz? –

    +0

    Bu adil bir nokta. Daha fazla bilgi sağlamak için yayını düzenledim. Bu benim ilk uygun yazı bu yüzden bilgi eksikliği için özür dilerim (aslında bugün benzer bir soruya cevap verdim ve şimdi ikisini de sabitledim). –

    İlgili konular