Qt 5リモートデバッグデスクトップアプリケーションノート

2994 ワード

Date: 2017-08-17
Author: Kagula
Environment:
[1]
msys64
[2]Target側アドレス192.168.2.2.152
GNU gdbserver (GDB) 7.11
C:\msys64\mingw32\bin\gdbserver.exe
[3]ホスト側アドレス192.168.2.1111
C:\msys64\mingw32\bin\gdb.exe
[4]マイクロソフトのDebugツールは、本明細書では使用されていません.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe
[5]
QT Creator 3.5.1
[6]Qt 5.6
C:\Qt\Qt5.6.0_Mingw\bin
[7]TargetマシンWin 7 OS
ホストマシンWin 10 OS
Introduction:
Windows 10 Qt Creatorで、Windows 7で実行されるQtプログラムをリモートでデバッグする方法について説明します.
Content:
GDBデバッグ環境は
ホストと
Targetの2つの部分で構成され、ホスト側で使用されます.
gdbコマンド、Target側で使用
gdbserverコマンド.
デバッグ時、アプリケーションはターゲットシステム(組み込みデバイスであってもよい)で実行され、gdbデバッグはホスト側で実行されます.
Host、Targetの間でTCP/IPを通じて通信を行い、binファイルのデバッグを共同で完成する.
両方とも共通のsymbolライブラリを使用し、QtCreatorは解析を担当し、gdbserverはsymbolとレジスタ値をキャプチャします.
第一歩:HelloWorld Qt Consoleプロジェクトを構築し、リモートデバッグの実行可能性を検証します.
ソース・コードのリストは次のとおりです.
#include 
#include 

#include 
using namespace std;

int main(int argc, char *argv[])
{
    //QCoreApplication a(argc, argv);

    qDebug() << "Hello, world from qDebug!";
    cout << "Hello,World from std::cout!" << endl;

    cin.get();

    return 0;//return a.exec();
}

ステップ2:Targetエンド
Step1:
ホストエンドDebugモードコンパイル
HelloWorld.exe後にプログラムをTarget側に置き、プログラムが実行できることを確認します.
ソースファイルパスの仮定
D:\workspace_qt\build-HelloWorld-Mingw32-Debug\debug
このパスから新しくハローワールドを生成します.ExceはTargetマシンに新しい
qt5_debugディレクトリ.
同時に
C:\msys64\mingw32\bin
パスの下で、次の4つのファイルをターゲットディレクトリにコピーします.
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
zlib1.dll
ホストマシンを
C:\Qt\Qt5.6.0_Mingwbinの下のすべての
*d.dllをTargetマシンqt 5にコピーdebugディレクトリ、
ディレクトリの下で実行できるようになりましたexeは、どのライブラリが少ないかを示すプロンプトは表示されません.
Step Last:
C:msys 64mingw 32binディレクトリの
gdbserver.exeはTarget端子qt 5_にコピーするdebugディレクトリ、
コマンドラインの下に次のコマンドを入力します.
gdbserver 192.168.2.111:2345 HelloWorld
このうち192.168.2.1111はホスト側のアドレスであり、2345はリスニングポートであり、HelloWorldはアプリケーション名である.
最後のステップ:hostエンド単一ステップ追跡
Step 1:Host側設定Debugger構成情報QT Creator Tools->Options->Debugger->GDB->Additional Startup Commands入力ボックスに「共有ライブラリ検索パス」設定を入力:set sysroot C:QtQt 5.6.0_Mingw\bin;C:\msys64\mingw32\bin;C:\Windows\syswow64
Last Step:
QtCreator->debug->start debuging->attached to remote debug serverの構成...IPアドレス、ポート、およびデバッグ対象ファイルのパスを入力します.

Local executableは、デバッグするexeプログラムのローカルパスです.入力する必要があります.
「Command line arguments:」はあなたのHelloWorldプログラムに必要なコマンドラインパラメータを指すので、ここに記入する必要はありません.
クリック[
OK]後、プログラムブレークポイントに入り、「リモート単一ステップ追跡」が成功したことを確認します.
補足:
[1]QT Creator Debugの場合、メインメニューは次の経路Window->Views->Debugger Log
Debugger Logウィンドウを開き、GDBログを表示します.
[2]設定しない場合
Sysroot,shared libraryはtargetからhostに返信し,Debuggerの起動に少なくとも数分かかる.