📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

Wiki がページ「Qtの設定 - デバッグコンソール」を「Qtの設定 - デバッグ」に、リダイレクトを残さずに移動しました
文字列「__FORCETOC__」を「{{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This pag…
 
(同じ利用者による、間の8版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
Qt Creatorに於いて、デバッグ時に使用するコンソールを変更する方法を記載する。<br>
Qt Creatorにおいて、デバッグに関する設定方法を記載する。<br>
<br><br>
<br><br>


== Qt Creatorの設定 ==
== CMakeの設定 ==
Qt Creatorで、CMakeを使用するプロジェクトを作成してデバッグを実行するとき、以下の警告文が表示される場合がある。<br>
Qt Creatorで、CMakeを使用するプロジェクトを作成してデバッグを実行するとき、以下の警告文が表示される場合がある。<br>
  warning: GDB: Failed to set controlling terminal: ...
  warning: GDB: Failed to set controlling terminal: ...
11行目: 11行目:
これにより、QT Creatorは、GDBで適切に動作するXterm(デフォルト)内でプログラムを実行する。<br>
これにより、QT Creatorは、GDBで適切に動作するXterm(デフォルト)内でプログラムを実行する。<br>
[[ファイル:Qt Configuration 1.jpg|フレームなし|中央]]
[[ファイル:Qt Configuration 1.jpg|フレームなし|中央]]
<br>
<br><br>
<br>
 
== デバッグターミナルの設定 ==
デバッグターミナルを別のソフトウェアに変更する場合は、Qt Creatorのメニューバーから、<br>
デバッグターミナルを別のソフトウェアに変更する場合は、Qt Creatorのメニューバーから、<br>
[ツール] - [オプション] - [環境] - [システム]タブ - [ターミナル]項目に、デバッグターミナルとして使用するソフトウェアのフルパス名を記述する。<br>
[ツール] - [オプション] - [環境] - [システム]タブ - [ターミナル]項目に、デバッグターミナルとして使用するソフトウェアのフルパス名を記述する。<br>
このパラメーターは、外部コマンドまたはソフトウェアを実行するように指示する。<br>
このパラメーターは、外部コマンドまたはソフトウェアを実行するように指示する。<br>
# Gnome Terminalをデバッグターミナルに設定する場合 (推奨)
/usr/bin/gnome-terminal
-x
# Alacrittyをデバッグターミナルに設定する場合 (推奨)
/<Alacrittyのインストールディレクトリ>/alacritty
-e
 
  # X terminalをデバッグターミナルに設定する場合
  # X terminalをデバッグターミナルに設定する場合
  /usr/bin/xterm
  /usr/bin/xterm
21行目: 32行目:
  -e
  -e
   
   
  # konsoleをデバッグターミナルに設定する場合
# X terminalをroot権限としてデバッグターミナルに設定する場合
/usr/bin/xterm
--separate
-e sudo
  # konsoleをデバッグターミナルに設定する場合 (KonsoleおよびYakuakeは動作しない可能性あり)
  /usr/bin/konsole
  /usr/bin/konsole
  --separate
  --separate
  -e
  -e
[[ファイル:Qt Configuration 2.jpg|フレームなし|中央]]
[[ファイル:Qt Configuration 2.jpg|フレームなし|中央]]
<br>
<br>
<br>
また、初期設定では、デバッガが開始されるとQT Creatorもフォアグラウンドに配置されて、開始されたターミナルが背面に表示される。<br>
また、初期設定では、デバッガが開始されるとQT Creatorもフォアグラウンドに配置されて、開始されたターミナルが背面に表示される。<br>
33行目: 48行目:
[[ファイル:Qt Configuration 3.jpg|フレームなし|中央]]
[[ファイル:Qt Configuration 3.jpg|フレームなし|中央]]
<br><br>
<br><br>
== デバッガの設定 ==
デバッガを設定するには、[ツール] - [オプション]を選択する。<br>
[オプション画面]画面が開くので、画面左の[デバッガ]を選択する。<br>
<br>
* [一般]タブ
*: 全てのデバッガに共通の設定を行う。
*: <br>
* [GDB]タブ
*: GDBプロセスの設定を行う。
*: <br>
*: GDBプロセスを終了するためのタイムアウトを指定するには、GDBタイムアウトフィールドに待機する秒数を設定する。
*: 大きなライブラリの読み込みやソースファイルの一覧表示に時間が掛かる場合は、値を大きくする必要がある。
*: <br>
*: デバッガの起動時にデフォルトの.gdbinitファイルを読み込むには、[Load .gdbinit file on startup]チェックボックスを選択する。
*: インストールされているまたはアプリケーションが使用するライブラリにリンクされている標準のGDBプリティプリンタを使用するには、
*: [Load system GDB pretty printers]チェックボックスを選択する。
*: <br>
*: GDBがリモートターゲットに正常にアタッチされた後にGDBコマンドを実行するには、[Additional Attach Commands]フィールドに入力する。
*: ここでは、モニタのリセット・ロード等、ターゲットをさらにセットアップするためのコマンドを追加することができる。
*: <br>
* [GDB拡張]タブ
*: この設定では、GDBの高度な機能や実験的な機能を使用することができる。
*: しかし、これらの機能を有効にすると、デバッグ作業に悪影響を及ぼす可能性があるので、注意して使用すること。
*: <br>
*: 非同期モードを制御する場合は、それぞれのチェックボックスを選択する。
*: GDB起動時に/usr/src/debug等のデバッグ情報の場所に共通のパスを追加するには、デバッグ情報の共通の場所を使用するチェックボックスを選択する。
*: qWarning、qFatal、abortが呼び出された時に停止するには、それぞれのチェックボックスを選択する。
*: <br>
*: 逆引きを有効にするには、逆引きを有効にするチェックボックスを選択する。
*: この機能は非常に遅く、システムコールを逆行する際に予測不可能な動作を示し、デバッグセッションを破壊する可能性が高い。
*: <br>
*: フォーク後に全ての子プロセスをデバッグし続けるには、[すべての子プロセスをデバッグする]チェックボックスを選択する。
<br><br>
== qDebug関数 ==
<code>qDebug</code>関数は、デバッグログをQt Creatorの[アプリケーション出力]ペインに出力するために使用する。<br>
また、<code>qDebug</code>関数以外にも、以下のような同様の関数が存在する。<br>
* qInfo()
* qWarning()
* qCritical()
* qFatal()
<br>
<code>qDebug</code>関数は、<code>printf</code>関数と同様の形式で使用できる。<br>
<syntaxhighlight lang="c++">
#include <QDebug>
qDebug("test");
qDebug("int:%d", 10);
qDebug("double:%lf", 123.45);
qDebug("string:%s", u8"abcあいう");
</syntaxhighlight>
<br>
<code>qDebug</code>関数をC++のストリーム形式で使用する場合、<code>QDebug</code>をインクルードする必要がある。<br>
<syntaxhighlight lang="c++">
#include <QDebug>
qDebug() << "test";
qDebug() << "int:" << 10;
qDebug() << "double:" << 123.45;
qDebug() << "string:" << u8"abcあいう";
</syntaxhighlight>
<br>
また、<code><<</code>を使用して出力した場合に付加される空白を無くすには、<code>nospace</code>を指定する。<br>
<syntaxhighlight lang="c++">
#include <QDebug>
qDebug().nospace() << "test";
qDebug().nospace() << "int:" << 10;
qDebug().nospace() << "double:" << 123.45;
qDebug().nospace() << "string:" << u8"abcあいう";
</syntaxhighlight>
<br>
<code>QDateTime</code>等のQtの値型の多くのもの、および、<code>QList</code>等のQtのコンテナ型もそのまま出力できる。<br>
<code>QObject</code>クラスの派生型は、<code>QObject</code>のポインタとして出力することにより、クラス名やオブジェクト名と共に出力することができる。<br>
<syntaxhighlight lang="c++">
#include <QDebug>
qDebug() << QString("id=%1, name=%2").arg(123).arg("name_123");  // 出力 : id=123, name=name_123
qDebug() << QDateTime::currentDateTime();                        // 出力 : QDateTime(2020-12-06 21:53:19.311 東京 (標準時) Qt::LocalTime)
QList<double>{1.1, 1.2, 1.3};                                    // 出力 : (1.1, 1.2, 1.3)
QFile file("/etc/fstab");
file.setObjectName("fstab_file");
qDebug() << &file;                                              // 出力 : QFile(0x4a7b6ffb50, name = "fstab_file")
</syntaxhighlight>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:Qt]]
[[カテゴリ:Qt]]