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> continueMATLAB のデバッグを開始する場合は、gdb を中断して次のコマンドを入力します。
<gdb> Ctrl+C <gdb> handle SIGUSR1 stop printJVM® が読み込まれている場合は、次のコマンドを入力します。
<gdb> handle SIGSEGV SIGBUS nostop noprintJava® が読み込まれているかどうかを確認するには、MATLAB プロンプトで次を入力します。
>> jenv
MEX 関数へのエントリ ポイント
mexFunctionにブレークポイントを設定します。<gdb> break mexFunction <gdb> continueMATLAB で、MEX ファイルを実行します。
>> yprime(1,1:4)
この時点でコードをステップ実行できます。
<gdb> stepデバッグ セッションを完了するには、次を入力します。
<gdb> continueyprimeが終了し、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 -nodesktopJVM が読み込まれている場合は、次のコマンドを入力します。
<gdb> handle SIGSEGV SIGBUS nostop noprintJava が読み込まれているかどうかを確認するには、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> continueyprimeが終了し、MATLAB に以下のように表示されます。ans = 2.0000 8.9685 4.0000 -1.0947MATLAB プロンプトで以下を入力して、デバッガーに制御を返します。
>> dbmex stopまたは、MATLAB の実行を終了する場合は、以下を入力します。
>> quit
デバッガーの使用が終了したら、次のように入力します。
<gdb> quitLinux プロンプトに戻ります。
デバッガーの使用方法の詳細については、デバッガーのドキュメンテーションを参照してください。