質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Q&A

0回答

4972閲覧

gdbを使ったリモートデバッグ

kamontia

総合スコア7

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

0グッド

0クリップ

投稿2017/11/10 08:33

###実現したいこと・聞きたいこと
0. gdbserverを使って実行中のプロセスをリモートデバッグしたい
→ (現状)現在リモートデバッグでエラーが出ており正常にデバッグが出来ていない。
0. 実行中のプロセスをCLIではなくEclipse等のIDEを用いてデバッグをしたい
→ 1.が実現できたとして、EclipseなどのGUIでデバッグを行いたい

 2 についてインターネット上ではホスト環境にクロスコンパイル環境を整え、クロスコンパイル後にバイナリを転送してリモートデバッグを行っている記事が多いですが、リモート側でgdbserverを使って既に実行中にプロセスにアタッチ、ホスト側でGUIでデバッグすることは可能なのか(ホスト側にソースは用意していない)

###構成
raspberryPi(gdbserver,192.168.100.250) <---> Ubuntu(gdb,192.168.100.254)

  • ホストはUbuntu
  • リモートはRaspberryPiで、プログラムを実行中

RasbewrryPi側で以下のコマンドを実行

bash

1$gdbserver --multi localhost:10000 --attach (実行中のプログラムのPID)

Ubuntu側で
RaspberryPiのクロスコンパイル環境を構築し以下のコマンドを実行

bash

1$arm-linux-gnueabihf-gdb 2(gdb)target remote 192.168.100.250:10000

###発生している問題
warningが表示されて正常にデバッグが出来ない。
Ubuntu側のコンソール画面

bash

1(gdb) target remote 192.168.100.250:10000 2A program is being debugged already. Kill it? (y or n) y 3Remote debugging using 192.168.100.250:10000 4warning: Could not load vsyscall page because no executable was specified 5try using the "file" command first. 60x76fcfca0 in ?? ()

###ソースコード
Timer.c

C

1#include<stdio.h> 2#include<time.h> 3void main() { 4 int i = 0; 5 6 while (1) { 7 ++i; 8 printf("hello "); 9 printf("Timer:%d \n", i); 10 sleep(1); 11 } 12}

コンパイル

bash

1$ gcc -g3 ./Timer.c -o Timer

###試したこと
問題の切り分けのために以下の作業を行いましたが、結局究明に至りませんでした。

  • 実行中のプロセスにアタッチしていることが原因?

→ gdbserverコマンドで--attachは使わずにプログラム実行。同様のエラーが発生。

bash

1$gdbsever localhost:10000 Timer
  • gdbserverが原因?

→ Ubuntuからではなく、直接RaspberyPi上でgdbを行うと正常に動作するので、クロスコンパイル環境は正しくリモート環境が上手くいっていない?

bash

1$gdb Timer
  • Eclipseを使ってクロスコンパイル環境を整えて実行

http://blue-black.ink/?page_id=2392
上記のサイトを参考に実施するとリモートデバッグが正常に出来たため、リモート環境が悪いわけではない?

###補足情報
ホスト側
gdb:GNU gdb (GNU gdb (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) 7.6.1-2013.10

リモート側
gdbserver:GNU gdbserver (Raspbian 7.7.1+dfsg-5+rpi1) 7.7.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問