問題タブ [gdbserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gdb - gdb - gdbserver トレース リモート プログラムの実行
ローカル コンピューター (Windows x86) 上の gdb とリモート ターゲット (arm-linux) 上の gdbserver を使用して、プログラム (プログラム カウンターのようなもの) の実行シーケンスを抽出しようとしています。私が考えていたのは、ソース ファイルの「重要な」行 (つまり、特定の関数の先頭、より一般的には条件ステートメントの前後) にブレークポイントを挿入し、各ブレークポイントの無視カウントを高くすることでした。ブレークポイントがヒットしたかどうかを確認します。実際にこの方法で情報を受け取ることはできましたが、問題があります。デバッグしているアプリケーションの動作がリアルタイムに依存しており、この特定の方法ではプログラムの実行が非常に遅くなります。gdbで他の方法を使用できると思いますか? 私はトレースポイントに出くわしました。これはまさに私が探しているもののようです。しかし、「ヒットカウンター」のようなプロパティを見つけることができませんでした。現在使用している gdb のバージョンは 7.5 です。
よろしくお願いします。
gdb - gdbserver トレースポイント アームのサポート
arm 用に gdbserver 7.6 を次のようにコンパイルしました。
次に、arm 用に gdb 7.6 を次のようにコンパイルしました。
簡単なアプリケーションを次のようにコンパイルしました。
gdbserver とクロスコンパイルしたアプリケーションをボードにコピーしました。私のPC(x86-pc-linux)から次を実行します:
動作はtstartコマンドまでは「正常」です。アプリケーションを必要に応じてデバッグできますが、アプリのトレースを開始できません。
問題は、gdbserver は arm のトレースポイントをサポートするのか、それとも x86/amd_64 のみをサポートするのかということです。
linux - gdbserver を使用してリモート デバッグを行うには?
セグメント違反が発生しているプログラムが 1 つあります。それをリモートでデバッグする必要があります。そのために私は次のことをしています:
ターゲット ボード上:
ホスト x86 マシン:
しかし、上記のコマンドを実行した後、いくつかのエラーが発生します:
を使用して、これらのライブラリが配置されているホストにこれらのライブラリのパスを設定しようとしましたexport LD_LIBRARY_PATH
が、まだ運がありません。
どんな助けでも大歓迎です。
よろしく、
ユヴィ
qt - Qt Creator 2.7.1 および Qt 4.8.4 でライブラリをリモートでデバッグできない
Qt Creator 2.7.1 と Qt 4.8.4 を使用して、Qt ライブラリと、このライブラリに対して動的にリンクする簡単な Qt アプリを作成しました。アプリをリモートでデプロイしてデバッグし、呼び出し時にライブラリ関数にステップインしようとしています。ブレークポイントを設定してリモートでデバッグすることはできますが、デバッガー ( gdb ) を使用してライブラリ関数にステップ インすることはできません。デバッグ モードで QtCreator を使用して初めてアプリケーションをリモートで起動すると、次の警告が表示されます。
私のデバッガーは、これらの画像に示すように QtCreator を使用してセットアップされています (画像 #3 で「ターゲット パス」と「パス」の両方を切り替えましたが、役に立たなかったことに注意してください。
私の「キット」は次のように設定されています:
Qt Creator 内の「Debugger Log」に「コマンド」を入力しました。
私が応答を得たのは:
また、ライブラリとアプリの両方が次のもので構築されていることも確認しました。
ライブラリとアプリの両方の [コンパイル出力] ペインに、「-g」フラグが表示されます。
どちらもファイルシステムの同じディレクトリにあるので、何が起こっているのでしょう! アプリでブレークポイントをデバッグおよび設定できますが、ライブラリ呼び出しにステップインできないのはなぜですか? どんなアイデアでも大歓迎です。
アップデート:
kikeenrique の提案に従って、Ubuntu ホスト (ARM ターゲットではない) からデバッグ シンボルをロードしようとしました。
GDBは少なくともシンボルをロードできるようです..
arm - gdserver クロス コンパイルに失敗しました => エラー: termcap ライブラリが見つかりません
arm 用に gdbserver をクロスコンパイルしようとすると、イライラするエラーが発生します。このコマンドでtermcapをダウンロードしてクロスコンパイルしました
エラーが表示されなかったので、このようなクロスコンパイルが成功したため、以下に示すようにアームである libtermcap.a を取得し、 ~/termcap/ にあります。
ただし、同じオプションを使用して、arm 用の gdbserver をクロスコンパイルし、クロスコンパイルされた lib を呼び出すために同じことをしようとすると、
私はこれを得る
ライブラリ libncurses5-dev のインストールを提案するサイトをインターネット上でいくつか見つけましたが、既にインストール済みです!
どうすれば gdbserver をクロスコンパイルできるかわかりません。助けてください!
前もって感謝します!!
よろしく
gdb - GDB でのスタック トレースの問題
リモート構成で GDB を使用しています。Linuxを実行しているARM HWでgdbserverを実行しているため、ローカルgdbからリモートgdbserverに接続し、コードの最初の部分にブレークポイントを配置して、基本的にGDBが機能することを確認できます。しかし、SW をしばらく実行して中断してスレッドを確認すると、スレッドの有用なスタック トレースが得られません。すべてのスタック フレームは 16 進数でアドレス指定されており、バイナリに存在するシンボルに解決されません。それらのほとんどは、「同じスタックフレーム、破損したスタック??」を示唆する gdb でも同じように見えます。
SW はデバッガーの有無にかかわらず正常に動作するため、SW を疑うことはありません。誰もがこの問題を見た、またはここで何が起こっているのか考えています.
ありがとう
android-ndk - r9 を使用した NDK のデバッグは W7/64 では機能しますが、XP では問題が発生します
最近、新しい Android 開発ツール、SDK 20130717 および NDK r9 をロードしました。
これまで、XP と W7/64 の両方のシステムで、Eclipse 内からの作業とデバッグに問題なく以前のバージョンを使用していました。
現在、新しいツールをインストールした W7/64 は機能し、新しいツールのインストールと必要なパス環境の変更後にアプリを正常にデバッグします。
「Debug As」+「Android Native Application」を選択すると問題なく動作します。
まだXPは、フォルダー/ cygwinなどに関して正確な構成を持っていますが、新しいツールがインストールされ、必要なパスenvが変更された後、ndk-dbgを開始できず、決定的に待機しているようです。 「MyApp の起動 (1): (100%)」で。これは、「Debug As」+「Android Native Application」を選択した後に発生します。
何が原因である可能性があるかについてのヒントはありますか?または、XP と r9 のデバッグで見逃している既知の問題はありますか?
ありがとう、クリストス
*編集
ndk-gdb を手動で開始しようとしましたが、これが得られたものです。ヒントは大歓迎です
引用符
$ ndk-gdb --start --verbose --force
Android NDK インストール パス: /cygdrive/e/android-ndk-r9
デフォルトの adb コマンドを使用: /cygdrive/e/adt-bundle-windows-x86-20130717/sdk/platform-tools/adb
ADB のバージョンが見つかりました: Android Debug Bridge バージョン 1.0.31
ADB フラグの使用:
JDB コマンドの使用: /cygdrive/e/Android/Java/jdk1.7.0_21/bin/jdb
自動検出されたプロジェクト パスを使用: .
見つかったパッケージ名: myndkpackage
アプリケーションが対象とする ABI: armeabi-v7a
デバイス API レベル: 17
デバイス CPU ABI: armeabi-v7a armeabi
互換性のあるデバイス ABI: armeabi-v7a
gdb セットアップ初期化の使用: ./libs/armeabi-v7a/gdb.setup
ツールチェーン プレフィックスの使用: /cygdrive/e/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-
アプリ出力ディレクトリの使用: ./obj/local/armeabi-v7a
デバッグ可能なフラグが見つかりました: true
デバイス gdbserver が見つかりました: /data/data/myndkpackage/lib/gdbserver
見つかったデータ ディレクトリ: '/data/data/myndkpackage'
最初の起動可能なアクティビティが見つかりました: myndkpackage.MainActivity
起動アクティビティ: myndkpackage/myndkpackage.MainActivity
コマンド: adb_cmd shell am start -D -n myndkpackage/myndkpackage.MainActivity
開始: 意図 { cmp=myndkpackage/.MainActivity }
コマンド: adb_cmd シェル スリープ 2
実行中の PID が見つかりました: 2787
既存のデバッグ セッションを強制終了しています
コマンド: adb_cmd shell kill -9 2753
gdbserver を正常に起動しました。
ネットワーク リダイレクトのセットアップ
コマンド: adb_cmd shell run-as myndkpackage lib/gdbserver +debug-socket --attach 2787
コマンド: adb_cmd forward tcp:5039 localfilesystem:/data/data/myndkpackage/debug-socket
添付; ピッド = 2787
Unix ソケットでリッスンする debug-socket
コマンド: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process
599 KB/秒 (0.015 秒で 9588 バイト)
デバイス/エミュレーターから app_process をプルしました。
コマンド: adb_cmd pull /system/bin/linker obj/local/armeabi-v7a/linker
658 KB/秒 (0.093 秒で 63244 バイト)
デバイス/エミュレーターからリンカーをプルしました。
コマンド: adb_cmd pull /system/lib/libc.so obj/local/armeabi-v7a/libc.so
744 KB/秒 (0.390 秒で 297608 バイト)
デバイス/エミュレーターから libc.so をプルしました。
JDB 接続のセットアップ
コマンド: adb_cmd forward tcp:65534 jdwp:2787
java.io.IOException: ハンドシェイクに失敗しました - 接続が途中で閉じられました
com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:136) で
com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232) で
com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116) で
com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90) で
com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519) で
com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328) で
com.sun.tools.example.debug.tty.Env.init(Env.java:63) で
com.sun.tools.example.debug.tty.TTY.main(TTY.java:1066) で
致命的な誤り:
ターゲット VM に接続できません。
/cygdrive/e/android-ndk-r9/ndk-gdb: 742 行目: 4636 セグメンテーション違反 $GDBCLIENT -x
native_path $GDBSETUP
引用符