組み込みgdb + gdbserverデバッグ環境の構築と使用

目次

1.原則

二、環境構築

3、デバッグプロセス

4、gdbで一般的に使用されるコマンド

1. l(リスト)コマンド

2. b(ブレーク)コマンド

3.cコマンド

4.sコマンド

5.nコマンド

6、pコマンド

7、qコマンド


1.原則

組み込みシステムは通常、PC側でgdbツールを実行し、ソースコードもPC側にあります。ソースコードに対応する実行可能ファイルは、実行するために開発ボードに配置されます。このためには、開発ボードでgdbserverを実行し、ネットワークを介してPC側のgdbと通信する必要があります。したがって、PC上のgdbを介して組み込みプログラムをデバッグする場合は、gdbとgdbserverの2つ必要です。gdbはPC上で実行され、gdbserverは開発ボードに移植する必要があります。

二、環境構築

通常、クロスコンパイルにはすでにgdbとgdbserverが付属しています。移植せずに組み込みのクロスコンパイラを直接使用し、gdbserverをルートファイルシステムの/ usr / binディレクトリに直接コピーし、開発ボードの起動後にnfsサービスを使用できます。 ubuntuの下のファイルシステム;クロスコンパイラが付属していない場合は、インストール用のソースコードをダウンロードする必要があります

1.クロスコンパイラには付属しています

導入手引き:

gdbserverをrootfsルートファイルシステム/ usr / binにコピーします

sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/gdbserver /home/denghengli/linux/nfs/rootfs/usr/bin/

2.ソースコードのダウンロードとインストールの手順

少し。

3、デバッグプロセス

1.ソースコードをデバッグ情報を含む実行可能ファイルにコンパイルしてから、開発ボードにコピーします。たとえば、gdbtest.cファイルはubuntuの下に書き込まれ、gdbtest実行可能ファイルはコンパイルが完了した後に開発ボードに送信されます。

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
	unsigned int times = 0;

	while (1)
	{
		printf("runging times: %d \r\n", times);
		times++;
		sleep(1);
	}
}

コンパイル:

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g //编译测试程序,注意 -g选项

rootfsルートファイルシステムにコピーします(開発ボードの起動後、nfsサービスを介してubuntuの下のルートファイルシステムを使用します):

sudo cp gdbtest /home/denghengli/linux/nfs/rootfs/lib/modules/4.1.15/

2.開発ボードで、gdbserverを起動し、デバッグする実行可能ファイルを実行します

gdbserver 192.168.0.107:2000 gdbtest //启动开发板上的 gdbserver

192.168.0.107は指定されたubuntuホストIPです

2000は、デバッグ用に開くポートであり、自由に指定できます。

gdbtestはデバッグ用の実行可能ファイルなので、必ずgdbtestのパスを持ってきてください!

3. ubuntuでgdbを開き、開発ボードでgdbserverに接続します

arm-linux-gnueabihf-gdb gdbtest //启动gdb调试
target remote 192.168.0.20:2000 //连接到开发板,192.168.0.20为开发板ip

接続が成功すると、192.168.0.20:2000を使用したリモートデバッグが要求されます。

4.デバッグコマンドを使用してデバッグします

12行目にブレークポイントを設定し、cを入力してブレークポイントまで実行すると、プログラムが開発ボードで実行され、コンソールに情報が出力されます。

pを入力して時間情報を出力し、最後にqを入力してデバッグを終了すると、開発ボード上のgdbserverも停止します。

4、gdbで一般的に使用されるコマンド

1. l(リスト)コマンド

すべてのプログラムソースコードを一覧表示します。コマンドの後に、デバッグプログラムのすべてのソースコードが出力されます。ソースコードが出力されない場合は、「l」コマンドを繰り返し押すか、gdbデバッグツールのEnterキーを押して前のコードを繰り返します。コマンド!

2. b(ブレーク)コマンド

ブレークポイントを設定するために使用され、その後に特定の関数または行番号が続きます

3.cコマンド

ブレークポイントまで実行するために使用

4.sコマンド

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

5.nコマンド

nコマンド(次へ)もシングルステップ操作ですが、nコマンドは関数に入りません。

6、pコマンド

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

7、qコマンド

qコマンド(quit)を使用してデバッグを終了し、開発ボード上のgdbserverも停止します。

 

おすすめ

転載: blog.csdn.net/m0_37845735/article/details/107031218