arm-linux gdb リモート デバッグ

通常、クロス コンパイルには既に gdb および gdbserver
パスが付属しています: /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin


クロス コンパイラに gdb と gdbserver が付属している場合は、gdbserver を開発ボードのルート ファイル システムの /bin ディレクトリ にコピーするだけです。

テストアプリケーションを書く
 

#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
unsigned int times = 0;
while(1) {
printf("runing times:%d\r\n", times);
times++;
sleep(1);
}
}
arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g // テスト プログラムをコンパイルします。-g オプションに注意してください

すべての準備が整ったら、デバッグに GDB を使用して、ubuntu と開発ボードがネットワーク経由で通信できることを確認できます。
開発ボードで次のコマンドを入力します。
gdbserver 192.168.1.253:2001 gdbtest //開発ボードで gdbserver を開始します。
 

次に、ubuntu で次のコマンドを入力して、gdb デバッグ ツールを起動します。arm
-linux-gdb gdbtest
 

一番下の (gdb) 行はコマンドを入力するために使用され、次のコマンドを入力して開発ボードに接続します。
target remote 192.168.1.251:2001 //開発ボードに接続します
 

l コマンド
l コマンド (リスト) は、すべてのプログラム ソース コードを一覧表示するために使用されます。


b コマンド
b コマンド (ブレーク) は、ブレークポイントを設定するために使用されます。省略形の "b" も使用でき、その後に特定の関数または行番号が続きます。たとえば、"break main" は、メイン関数にブレークポイントを設定することを意味します
。 、11行目の「break 11」はブレークポイントを設定します。

c コマンド
c コマンドは、ブレークポイントまで実行するために使用されます。c コマンドを入力すると、プログラムは次のブレークポイントまで実行されます。
 

s コマンド
s コマンド (ステップ) は 1 ステップ実行で、この関数は関数に入ります。
 

n コマンド
n コマンド (次) も 1 ステップ操作ですが、n コマンドは機能に入りません。
 

p コマンド
p コマンド (印刷) は、変数値を印刷するために使用されます。
 

q コマンド
q コマンド (終了) は、デバッグを終了するために使用され、開発ボード上の gdbserver も停止します。
 

一般的なコマンド:

          start: プログラムの実行を開始し、main 関数の最初のステートメントで停止します。

          list: 複数行のソース コードを表示します。略記: l.

          ブレーク行番号: ブレークポイントを設定します。プログラムはブレークポイントで停止します。省略形: b.

          continue: 次のブレークポイントに到達するまでプログラムを続行します。略記: c.

          print: 内部変数の値を出力します

          kill: デバッグ中のプログラムを終了します

         watch: プログラムに監視ポイントを設定し、変数の変化を監視します

        表示: 特定の変数を追跡して表示し、停止するたびにその値を表示します

       行番号の削除: ブレークポイントまたはウォッチポイントを削除します

       ステップ: 次のステートメントを実行します。ステートメントが関数呼び出しの場合は、関数を入力して最初のステートメントを実行します。

       終了: 関数に入り、関数を終了して呼び出し元の関数に戻りたい場合は、このコマンドを使用できます。

      next: シングルステップ実行、関数の内部まで追跡できない

      jump: 複数のブレークポイントが設定されている場合、別のブレークポイントにジャンプして実行を継続し、ソース プログラムの別のポイントから実行を開始します

     whatis variable or function: 関数または変数の型を表示します

       変数を設定 変数の値を設定

      backtrace bt: スタック上の関数呼び出しの情報を表示する

      backtrace n = bt n : n は正の整数で、スタックの上位 n 層のスタック情報のみが出力されることを示します。

                                       n は負の整数で、スタックの下位 n 層のスタック情報のみが印刷されることを示します。 

    frame n : スタック フレームを表示します。n は 0 から始まる整数で、スタック内のレイヤー番号です。

   up n: n レイヤーをスタックの一番上に移動することを意味し、n を入力しない場合は、1 レイヤー上に移動することを意味します。

   down n: スタックの一番下に n 層移動することを意味し、n が入力されていない場合は、1 層下に移動することを意味します。
 

おすすめ

転載: blog.csdn.net/L1153413073/article/details/125622344