Linux プラットフォームでのデバッグ
Linux® システムで使用できる GNU® デバッガー gdb には、ブレークポイントの設定、変数の調査、およびソース コードの行単位実行機能を含む、ソース コードの完全なデバッグ機能が用意されています。
この手順では、MATLAB® コマンドの前に MATLAB コマンド プロンプト >>
が表示されますが、linux>
は Linux プロンプトを表しています。システムによりプロンプトが異なる場合があります。デバッガーのプロンプトは、<gdb>
です。
この例では、MATLAB fullfile(matlabroot,"extern","examples","mex")
フォルダー内にある yprime.c
をデバッグするための一般的な手順を説明します。
gdb を使用した MATLAB プロセスへの接続
MATLAB を起動します。
-g
オプションを指定してソース MEX ファイルをコンパイルします。これで、デバッグ シンボルがインクルードされたファイルがビルドされます。MATLAB プロンプトで次を入力します。>> mex -g yprime.c
MATLAB プロセス ID 番号を取得します。 (R2025a 以降)
>> matlabProcessID
ans = uint64 38932
Linux ターミナルで、プロセス ID 番号を使用して MATLAB を gbd に接続します。
linux> gdb -p 38932
デバッガーを起動します。
<gdb> continue
MATLAB のデバッグを開始する場合は、gdb を中断して次のコマンドを入力します。
<gdb> Ctrl+C <gdb> handle SIGUSR1 stop print
JVM® が読み込まれている場合は、次のコマンドを入力します。
<gdb> handle SIGSEGV SIGBUS nostop noprint
Java® が読み込まれているかどうかを確認するには、MATLAB プロンプトで次を入力します。
>> jenv
MEX 関数へのエントリ ポイント
mexFunction
にブレークポイントを設定します。<gdb> break mexFunction <gdb> continue
MATLAB で、MEX ファイルを実行します。
>> yprime(1,1:4)
この時点でコードをステップ実行できます。
<gdb> step
デバッグ セッションを完了するには、次を入力します。
<gdb> continue
yprime
が終了し、MATLAB に以下のように表示されます。ans = 2.0000 8.9685 4.0000 -1.0947
gdb を使用した MATLAB の起動
gdb でデバッグするには、以下の手順に従います。
Linux プロンプトで、
-D
オプションを使用してmatlab
関数を使用し、gdb デバッガーを起動します。linux> matlab -Dgdb
デバッグを停止するよう gdb に指示します。
<gdb> handle SIGUSR1 stop print
デスクトップなしで MATLAB を起動します。
<gdb> run -nodesktop
JVM が読み込まれている場合は、次のコマンドを入力します。
<gdb> handle SIGSEGV SIGBUS nostop noprint
Java が読み込まれているかどうかを確認するには、MATLAB プロンプトで次を入力します。
>> jenv
-g
オプションを指定してソース MEX ファイルをコンパイルします。これで、デバッグ シンボルがインクルードされたファイルがビルドされます。たとえば、MATLAB プロンプトで以下を入力します。>> mex -g yprime.c
MATLAB で関数
dbmex
によるデバッグを有効にして、バイナリ MEX ファイルを実行します。>> dbmex on >> yprime(1,1:4)
デバッグを開始することができます。
ゲートウェイ ルーチンの先頭で停止するように、
mexFunction
でブレークポイントを設定すると便利です。<gdb> break mexFunction <gdb> continue
いずれかのブレークポイントに達した時点で、デバッガーのすべてのコマンドを使用した変数の確認、メモリの表示、レジスタの検査が可能です。
以下を入力してブレークポイントから先に進みます。
<gdb> continue
最後のブレークポイントで停止後、以下を入力します。
<gdb> continue
yprime
が終了し、MATLAB に以下のように表示されます。ans = 2.0000 8.9685 4.0000 -1.0947
MATLAB プロンプトで以下を入力して、デバッガーに制御を返します。
>> dbmex stop
または、MATLAB の実行を終了する場合は、以下を入力します。
>> quit
デバッガーの使用が終了したら、次のように入力します。
<gdb> quit
Linux プロンプトに戻ります。
デバッガーの使用方法の詳細については、デバッガーのドキュメンテーションを参照してください。