2011-02-08 7 views
13

Nexus Oneのカーネルデバッグを試みており、http://bootloader.wikidot.com/android:kgdbの指示に従っています。私は誰かが実際にこれを働かせるかどうか疑問に思っていましたか?そして誰もがKGDBを使ってカーネルをデバッグするための最新のソリューションを作っていますか?Android:KGDBでのカーネルデバッグ

+2

このツールを使用している間は、この作業がうまくいくかもしれませんが、与えられたゲーティングの問題を解決し、プロジェクトを再開することができます。 –

+1

関連の質問:[Android Kernel Debugging] ://stackoverflow.com/q/6697754/816008) –

答えて

2

私はあなたがすでにAndroidのカーネルのDevリストに質問をし、何の答えを得なかったことを知っていますが、KGDBとデバッグについての記事のアーカイブを検索しなかった?:http://groups.google.com/group/android-kernel/search?group=android-kernel&q=kgdb&qt_g=Search+this+group特に

、あなたは可能性がありますこの記事を見てみたい:http://groups.google.com/group/android-kernel/browse_thread/thread/5233e03391867c98/320beef11e737a62

はここで役に立つかもしれませんいくつかの他のランダムなリンクです:

  • http://wiki.ncl.cs.columbia.edu/wiki/AndroidVirt:Guides:Kernel_Debugging はとにかく、これは興味深い問題である、と私は本当にそれについて何かを見つけるのに苦労しています。あなたはいつかIRCで(#android-devまたは#アンドロイドルートのfreenodeで)ホッピングを試してみて、そこに何人かの人にポインタを求めてもらいたいかもしれません(the xda-developers Android forumsで質問してください)。

  • 2

    AndroidでKGDBの情報を探しているときにこの記事を見つけました。数年経っていますが、これを取得してNexus 6で実行していた作業のリンクを投稿する価値があると思いました。

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

    私は、これは同様の答えを探して、誰に役立ちます願っています。フィードバック(感謝すべて)以下の

    編集

    私はthis Accuvant blogに基づくUARTデバッグケーブルを作るために持っていたこの作業を取得するには。これはFTDI 3.3v基本ブレイクアウト(書き込み時点でSparkFunから入手可能)と4個の抵抗(2 x 1Kオーム、1 x 1.2Kオーム、1 x 100オーム)から構成されている非常に単純な回路です。 4素子チップリングリングスリーブ(TRRS)ヘッドフォンジャック。抵抗は基本的に分圧器を備えており、3.3Vを電話機の安全性を少し下げることができます。もう一方の端が回路基板に接続されたオーディオジャックを挿入することにより、オーディオサブシステムはピンの1つの電圧(約2.8V)を認識し、そのケーブルを介してUARTインターフェイスを提供することを認識します。 FTDIブレークアウトはUSB経由でPCに接続し、ミニコムなどの端末エミュレータからコンソールメッセージにアクセスできます。しかし、今では、同じメカニズムでシリアルインターフェイスを使用できます。これは、KGDB接続に使用できるインターフェイスです。

    この時点で、KGDB(具体的には、アトミック文字I/O操作を実行する機能)をサポートするために、Nexus 6のシリアルドライバ(msm_serial_hs_lite.c)には比較的小さな変更が必要です。私はちょうどStephen Boydと呼ばれるチャップが完全なMSM(クアルコム)シリアルドライバmsm_serial.cに苦労したので、Linuxカーネルのメインラインコードからthese changesを移植しました。彼の変更はここで見つけるか、Googleで "msm_serial:poll_のサポートを追加"を検索するだけです。ポートは難しくなく、私のコードはfound on githubになります。

    N6用のカスタムカーネルを構築する必要があることは別として、provides lots of information onです。その後、githubリポジトリにKGDBの変更を含むブートイメージを作成する必要があります。私は株カーネルをhttps://developers.google.com/android/nexus/imagesから取り出して(abootimg -xを使って)抽出し、次のコマンドを使用して私のカスタムカーネル(zImage-dtb)と追加のコマンドラインパラメータで再パックし、KGDBがロードされ、ポートので、のように:私は、コマンドFASTBOOTブートboot.imgのを使用して、それをブートadbのシェルを開き、コマンドを使用してAndroidのカーネルにブレークポイントを引き起こす可能性が作成した私のboot.imgので

    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-triggerにアクセスするためにスーパーユーザー権限が必要であることを言及する価値はあるので、t oルートを持っている。

    電話が停止し、デバッグケーブルが接続された状態で、非圧縮カーネルを引数として使用して、ホストPCにARM用GDBバージョンを起動します(arm-eabi-gdb ./vmlinuxなど)。注:私はUbuntu 14.04を実行していて、AOSPソースリポジトリの 'prebuilts'ディレクトリからarm-eabi-gdbを使用しています。最後に、次のコマンドを入力します。

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

    すべてすぐに(あなたの書き込みは/ procの/ sysrqにトリガを生成すること)KGDBのブレークポイントに侵入しなければならないだけでなく、このことと、デバッグを開始することができます。

    +0

    これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、自分の投稿の下にコメントを残してください。自分の投稿にいつもコメントをつけることができます。そして、十分な[評判](http://stackoverflow.com/help/whats-reputation) [任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。 – Sufian

    +0

    こんにちは。ご意見をいただきありがとうございます。 OPは2つの質問をしました。 KGDBを使ってカーネルをデバッグするための最新のソリューションを持っている人はいますか?私はUSB(OPのリンクで参照されている)を介してこれを取得することができませんでしたが、私はそれが現在のAndroidデバイス上のデバッグケーブルを使用して動作しているので、それは2番目の質問を満足したと思った。あなたが同意しないかどうか知りたいですか? –

    +0

    それは公正な点です。もっと詳しい情報を提供するために投稿を編集しました。これは私の最初の適切な投稿ですので、情報の欠如に対する謝罪をしました(私は実際に、今日の同様の質問に答えて、両方とも修正しました)。 –

    関連する問題