MEX関数のデバッグ方法について

19 views (last 30 days)
koji fukumoto
koji fukumoto on 26 Oct 2018
Commented: Kazuya on 30 Oct 2018
上記URLに記載の手順で、VC2012を用いたデバッグを行おうとしましたが、 ブレークポイントで停止することなく、yprimeが終了します。
URLに記載されていない注意点などございますでしょうか?
7の手順を実行した際の画面キャプチャを添付します。
図のように、ブレークポイントはいずれも無効となっておりますが、これは問題無いのですよね?
(手順7にも「実行可能ファイルをまだ実行していない場合、コード行の隣にブレークポイントとともに表示される [!] アイコンは無視してください。」とありますし…)
よろしくお願い致します。

Accepted Answer

Kazuya
Kazuya on 28 Oct 2018
Visual Studio 2015 で試してみましたが、、同じメッセージ「ブレークポイントは、現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません。」が出ますがうまくいきました。ただ、
mex -g yprime.c
ではなく
mex yprime.c
と -g 無しでコンパイルするとブレークポイントで止まらず。この点は大丈夫ですか?
  3 Comments
koji fukumoto
koji fukumoto on 30 Oct 2018
アタッチ先を「ネイティブコード」にすることで、ブレークポイントに泊まることを確認しました。
本当にありがとうございました!
Kazuya
Kazuya on 30 Oct 2018
よかったです!

Sign in to comment.

More Answers (1)

koji fukumoto
koji fukumoto on 29 Oct 2018
返信ありがとうございます。
> と -g 無しでコンパイルするとブレークポイントで止まらず。この点は大丈夫ですか?
はい、URLに記載の通り実行しておりますので(コマンドもコピペしておりますので)大丈夫です。
レスポンスも以下のように返ってきています。
>> mex -g yprime.c
'Microsoft Visual C++ 2012 (C)' でビルドしています。
MEX は正常に完了しました。
こちらの詳細な手順を以下に記します。 お手数ですが、何かお気づきの点などございましたらご指摘頂きたく。
-----------------------------------------------------
1."C:\work\"が空であることを確認
2.MATLAB R2018a」を起動
3.コマンド「cd C:\work」を実行
4.以下のコマンドを実行
  cc = mex.getCompilerConfigurations('C','Selected');
  cc.Name
  ⇒'Microsoft Visual C++ 2012 (C)'と表示されることを確認
5.以下のコマンドを実行
  copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')
  mex -g yprime.c
  ⇒"C:\work\"に「yprime.c」「yprime.mexw64」「yprime.mexw64.pdb」が存在することを確認
6.VC2012を起動し、[ツール]-[プロセスにアタッチ]-[MATLAB.exe]にアタッチ
7.VC2012[ファイル]-[開く]-[ファイル]"C:\work\yprime.c"を選択、mexFunction内にブレークポイントを設定
8.MATLABからコマンド「yprime(1,1:4)」を実行
 ⇒即座に「2.0000 8.9685 4.0000 -1.0947」と結果が返ってくる
-----------------------------------------------------
よろしくお願いします。
  1 Comment
Kazuya
Kazuya on 29 Oct 2018
詳細ありがとうございます。ドキュメントにある通りの手順ですね。。失礼しました。
上の回答にコメント追記しました。

Sign in to comment.

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!