2024年09月01日

MSYS2 版 MinGW-w64の gdb を使う方法

 wxWidgets によるプログラミングは細々と続けています。制作は主に Mac/Xcode 上で行い、動くようになったらクロスコンパイラで Windows 32bit/64bit 版をそれぞれ作成し、VMWare 上の Windows で動作確認する、という流れです。クロスコンパイラ(mingw-w64)の環境整備は以前に書きました:「Mac OS 10.14 で wxWidgets 開発(その1)」「(その2)」。

 Windows 上の開発環境は、MSYS2 版の mingw-w64 です。以前はこの環境で Windows 用バイナリをビルドしていたのですが、Mac 版の mingw-w64 によるクロスコンパイルが十分に実用的なので、現在はビルドシステムとしては使っていません。

 ただ、デバッグの環境は、どうしても Windows 上でやらないといけないのです。そこで、MSYS2 のターミナルを開いて、そこで gdb を立ち上げていました。

20240901-1.jpg

 wxWidgets 関係のプロジェクトをまとめたフォルダ wxMyProjects を VMWare で共有しています。これは Windows 上では z:wxMyProjects としてアクセスできますが、実際に cd すると //vmware-host/Shared Folders/wxMyProjects という名前になります。途中に半角スペースが入っているのが絶妙にウザいのですが、まあ今のところ大きな実害はないようです。

 ブレークポイントを設定したいのですが、Mac と Windows でフォルダの構成が違うので、ソースコードが見つかりません。これは、ホームディレクトリの .gdbinit ファイルに下のように指定することで、解決できます。substitute-path の次に書くのが Mac 上でのフォルダパス、その次に書くのが Windows 上でのフォルダパスです。なお、MSYS2のホームディレクトリは、MSYS2のインストールディレクトリの中の home/ユーザー名 というディレクトリです。

set substitute-path /Users/nagata/Development/wxMyProjects z:/wxMyProjects

 これでソースコードデバッグができるようになります。

20240901-2.jpg

 走っている Windows プログラムを止めて GDB に制御を移すには、F12 を押します。VMWare 上の Windows でもちゃんと機能しました。

20240901-4.jpg

 一応これでデバッグ作業はできるのですが、一つ大きな問題があります。MSYS2 のターミナルと GNU readline の相性が悪くて、タブ補完やヒストリ機能がまるっきり使えないのです。これは作業効率を著しく落とします。また、gdb が「y or n」で聞いてくるところをスキップされることもあります。例えば、プログラム動作中にブレークポイントで止めて、そのまま GDB を終了させると、普通は「y or n」で確認を求められるのですが、この環境だと問答無用で Yes と答えたことになってしまいます。「ハイかYesで答えなさい」ってやつかよ。「input not from terminal」とか言ってますけど、こっちはターミナルのつもりなんですが……

20240901-3.jpg

 これを回避するため、いろいろ調べたのですが、実は解決法は簡単でした。MSYS2 のターミナルじゃなくて、Windows の PowerShell を使えばいいのです。

20240901-5.jpg

 背景色が邪魔で一部情報が読めなかったりしますが、これは設定を変えればいいだけなので、大きな問題ではありません。

 PowerShell で MSYS2 のコマンドを使うためには、パスを通しておく必要があります。スタートメニュー→設定→システム→詳細情報(左の列の一番下)→システムの詳細設定→環境変数→ユーザー環境変数の Path を選んで編集→ C:\msys64\mingw64\bin\ を追加、という手順です。これはスクリーンショットで説明するほどでもないでしょう。

 emacs の GDB モードも使えることがわかりました。

20240901-6.jpg

 ソースコードが表示できます。画面上でブレークポイントの設定もできます。ただ、PowerShell 上の gdb に比べると、動作がかなり遅いので、常用するには厳しいかなと思っています。ソースコード自体は Xcode で見ればいいしね。

20240901-7.jpg

Posted at 2024年09月01日 01:14:44

2024年08月30日

QNAP TS-128A の Logitech Media Server を更新した

 しばらく前から、QNAP TS-128A 上で動かしている Logitech Media Server がときどき止まるようになりました。ログを見ると、こんなエラーが出ています。

2024-08-04 07:50:03,746 [Error] [A039, C001, 78] [App Center] QLogitechMediaServer has an invalid digital signature. The app has stopped and cannot be installed on QTS. You can remove it in the App Center.

 デジタル署名が不正だ、と言ってます。pkg を自分で拾ってきてインストールしたからかな? アップデートしようと思ったのですが、QNAP のコントロール画面からはうまくいかなかったため、一度削除してインストールし直すことにしました。こちらを参考にしました:「QNAPのNASにLogitech Media Serverをインストールする」(ブレインログ, 2024/04/13)

 Logitech Media Server は My QNAP(旧 QNAP Club)に登録されています。

20240822-1.jpg

 ここに登録されてるのなら、QNAP のコントロール画面からインストールできそうです。やってみました。QNAP のコントロール画面にログインして、AppCenter を開きます。右上の「設定」(歯車アイコン)を開きます。

20240830-2.jpg

 「アプリリポジトリ」を開き、「追加」を押します。

20240830-3.jpg

 「接続情報」の「名前」を MyQNAP、「URL」を https://www.myqnap.org/repo.xml とします。ユーザー名、パスワードは空です。

20240830-4.jpg

 「追加」→「閉じる」で、AppCenter の元の画面に戻ります。左端の列に「MyQNAP」が追加されているので、これを選びます。右上の検索窓で "Logitech" と入れると、無事 Logitech Media Server が見つかりました!

20240830-5.jpg

 「インストール」を押して、ダウンロード・インストールします。

20240830-6.jpg

 ここからの設定は、前回(「QNAP TS-128A:Logitech Media Server を使う」と同じです。無事復活しました!

20240830-7.jpg

タグ:NAS 音楽
Posted at 2024年08月30日 09:51:15

2024年08月22日

ミニトマトを1株片づけた

 1週間前のことですが、2株育てていたミニトマトのうち、1株を片づけました。こんな風に、すっかり枯れていたのです。

20240822-1.jpg

 掘り上げてみると、根がこれだけしかありませんでした。これじゃあだめだよなあ。人気のスリット鉢を使ったのに、何がいけなかったんだろう。途中までは調子良かったのに。

20240822-2.jpg

 大きいプランターに植えた方は、まだ何とか耐えています。ただ、元気いっぱいというわけではありません。ある時期から、実が全然大きくならないのです。肥料切れを起こしていたのかな?

20240822-3.jpg

 このプランターは、スイートバジル・イタリアンパセルとの混植なのです。イタリアンパセリは微妙ですが、バジルはめっちゃ元気です。ミニトマトはバジルに元気を吸い取られているのか、それともバジルがいるから何とか耐えているのか、どちらかわかりません。

20240822-4.jpg

 トマトは実はあまり暑いとダメになるそうなので、遅ればせながら、日除けカーテンをつけてみました。この夏もとにかく暑いですからね。

20240822-6.jpg

 そのほかの子たちです。エンサイはだいぶ調子が出てきました。一度収穫して、そのあとどんどん伸びてきています。エンサイは暑くても平気みたいです。ルッコラも植えたのですが、いつの間にか消えてしまいました。

20240822-5.jpg

 キンジソウとシソは元気です。キンジソウは、葉裏がなかなか紫になりません。昼と夜で寒暖差がつくようになると、色が濃くなるそうです。

20240822-7.jpg

タグ:園芸
Posted at 2024年08月22日 23:12:06
email.png