問題タブ [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.

0 投票する
1 に答える
969 参照

c - BusyBox で ARM をデバッグ シンボルなしでクロス コンパイルする

ARM926EJ-S rev 5 (v5l) で実行される C プログラムをデバッグしようとしています。ソフトウェアは、std とクロスコンパイルされました(静的にリンクされています)。arm-linux-gnueabi コンパイラ (シナプス経由でインストール)。Ubuntu 13.04 64bitを実行しています。デバイスにはBusybox v1.18.2があります。gdbserver ( host=arm-linux-gnueabi を使用) と gdb ( target=arm-linux-gnueabi を使用) を正常にコンパイルし、ローカルで実行されている gdb を介して組み込みデバイスでプログラムを開始できます...私の問題は、適切なバックトレース出力がありません。

gdb のメッセージ:

-g、-g3 -gdwarf-2、-ggdb、-ggdb3を使用してソフトウェアをコンパイルしようとしましたが、違いはありませんでした。

ここで何が欠けているのか、誰にも分かりますか?

これはおそらく BusyBox の問題ですか、それともホスト システムに追加のライブラリが必要ですか?

また、ほぼ同じ出力でexecinfo.hから関数backtrace_symbolsを試しました...

返信ありがとうございます。

0 投票する
1 に答える
1680 参照

c++ - リモート デバッグの問題

ローカル ネットワーク内のサーバーでアプリケーションをリモート デバッグしようとしています。

サーバ:

ワークステーション:

ワークステーションで「Hello World」アプリをコンパイルしたところ、ワークステーションとサーバーの両方でエラーなしで実行されました。

これはサーバーとワークステーションの両方で機能します

シェル 1:

シェル 2:

これは動作しません

サーバ:

ワークステーション:

GDB 出力

gdbserver は着信接続があることを通知しますが、hello world メッセージを書き込みません。

何か案は?

PS しばらく前に、この質問を linuxquestions.org に投稿しました。私はそれが適切なフォーラムではなかったと思うので、ここで運試しをしています。

0 投票する
1 に答える
1236 参照

android - Android GDB が C++ 共有ライブラリをロードしていません

c/c++ で作成した共有ライブラリをデバッグしようとしましたが、Eclipse を使用してデバッグできません。ブレークポイントがヒットしないように設定しinfo sharedlibrary、gdbで実行した後、ライブラリが存在しないことを確認して、次のようになりました(libtest-java.soと呼ばれます)

このライブラリを手動でロードする方法はありますか?? メイクファイルでは、次を使用します。

$(CLEAR_VARS) を含める

お時間をありがとうございました!

0 投票する
1 に答える
1983 参照

assembly - gdb を使用して qemu でデバッグするときの間違ったメモリ位置

私はアセンブラで小さなカーネルを書いています。QEMUで実行していますが、いくつかのバグに問題があります。ここで、dbg を使用してカーネルをデバッグします。だから私はそれを次のように組み立てました:

次に、QEMU で次のように実行します。

次に、gdb に接続します。

welcome文字列を指すカーネルで名前が付けられたラベルがあります。テスト中にその文字列を調べようとしたところ、次の結果が得られました。

ラベルは次のように定義されます。

ご覧のとおり、gdb はウェルカムが null バイトで始まるふりをしていますが、定義上はそうではありません。ただし、カーネルはラベルを正しく使用しているため、私のコードの問題ではないようです。メモリの他の部分を調べると、ロードされたカーネルとまったく一致しません。

マシンが正しく動作しているのに、仮想マシンのメモリがロードされたカーネルと一致しない理由を知っている人はいますか?

0 投票する
1 に答える
4883 参照

c - GDB がライブラリからシンボルをロードしない

GBD を使用して Android のネイティブ コードをデバッグしようとしています。コードは私が作成したものではなく、Android プロジェクトにもないため、ndk-gdb ツールを使用できません。Androidマシンでgdbserverを使用し、通常のGDBプログラムを使用してMacから接続します。すべてのライブラリ (objdump ツールによるとシンボルがあるはずです) をロードしようとしましたが、gdb は (gdb コマンド「info sharedLibrary」によると) シンボルをロードしないと通知します。これらは私が取ったステップです:

  1. Android マシンで gdbserver を起動します
  2. バイナリのデバッグ バージョンで GDB を起動します。

    gdb symbols/system/bin/mediaserver

次のコマンドは gdb 自体で実行されます

  1. シンボルを含むライブラリを探す場所を gdb に指示します

    (gdb) set solib-search-path symbols/system/lib

  2. ソースファイルの場所をgdbに伝える

    (gdb) directory /sources

  3. リモート ターゲット (Android マシン) に接続する

    (gdb) target remote 192.168.1.10:5039

GDB は実行中のバイナリに正常に接続し、実行を一時停止して続行できます。ただし、関数名や行番号などのデバッグ情報は表示されません。住所しか表示されません。使用されているライブラリのステータスを確認すると、gdb がシンボルを持っていないと考えていることがわかります。

  1. gdb のコマンド:

(gdb) info sharedLibrary From To Syms Read Shared Object Library 0x00003700 0x0000ff0c Yes /symbols/system/bin/linker No libc.so No libstdc++.so No libm.so No liblog.so No libcutils.so No libspeexresampler.so No libaudioutils.so No libgccdemangle.so No libamplayer.so

たとえば、最後のライブラリです。file コマンド (gdb ではありません) で確認すると、ストリップされていないライブラリであることがわかります (ライブラリは "symbols/system/lib" フォルダーにあります)。

file libamplayer.so

出力:

libamplayer.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

objdump コマンドは、その中に多くのシンボルを表示します (非常に長いため、出力は表示しません)。では、なぜ gdb はこのライブラリのシンボルを認識しないのでしょうか? 少なくとも行番号と関数名は、削除されていないバージョンのライブラリに存在すると思いました。それとも私が間違っていますか?誰かが私にもっと洞察を与えることができれば、とてもうれしいです。

ありがとう!

システム情報:

GDB バージョン: Mac OS X Mavericks の 7.3.1-gg2

0 投票する
0 に答える
60 参照

c++ - ブレークポイントがヒットしたときにのみ gdbserver に接続する方法は?

gdb では、次の内容の .gdbinit ファイルを作成します。

これにより、gdb はプログラムを実行し、それらのブレークポイントで停止します。

どうすればgdbserverで同じことができますか? 例: ブレークポイントに到達した場合にのみ接続を受け入れるために停止しますか?