C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: C++/CLI でSTL をデバッグ


(過去ログ 135 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■79436 / inTopicNo.1)  C++/CLI でSTL をデバッグ
  
□投稿者/ 雲 (1回)-(2016/04/01(Fri) 20:33:45)

分類:[C++/CLI] 

Visual Studio 2015 Update1 から C++/CLI で
STL の vector などがデバッグウインドウに
表示されなくなりました。

どうやら、C++/CLI と C++ でデバッガーが
違うようで、C++であれば問題なく vectorも
デバッガーで表示されますがC++/CLIでは表示
されません。

現在は、C#からC++/CLI 経由でC++ を呼び出して
おり、この時にvectorが表示されなくてとっても
困っています。

何か回避策などありましたら、ご教授頂けないで
しょうか?

よろしくお願いします。





引用返信 編集キー/
■79437 / inTopicNo.2)  Re[1]: C++/CLI でSTL をデバッグ
□投稿者/ とっちゃん (345回)-(2016/04/01(Fri) 20:45:52)
No79436 (雲 さん) に返信
> Visual Studio 2015 Update1 から C++/CLI で
> STL の vector などがデバッグウインドウに
> 表示されなくなりました。
>
> どうやら、C++/CLI と C++ でデバッガーが
> 違うようで、C++であれば問題なく vectorも
> デバッガーで表示されますがC++/CLIでは表示
> されません。
>
> 現在は、C#からC++/CLI 経由でC++ を呼び出して
> おり、この時にvectorが表示されなくてとっても
> 困っています。
>
> 何か回避策などありましたら、ご教授頂けないで
> しょうか?
>
C++/CLI のプロジェクトはEXEですか?それともDLLですか?
もし、DLLなら、起動しているEXEのプロパティのデバッグタブに
「ネイティブコードのデバッグを有効にする」というオプションがあります。

ここのチェックが外れていると、Nativeコードのデバッグができません。

引用返信 編集キー/
■79438 / inTopicNo.3)  Re[2]: C++/CLI でSTL をデバッグ
□投稿者/ とっちゃん (346回)-(2016/04/01(Fri) 22:02:10)
No79437 (とっちゃん さん) に返信
> C++/CLI のプロジェクトはEXEですか?それともDLLですか?
> もし、DLLなら、起動しているEXEのプロパティのデバッグタブに
> 「ネイティブコードのデバッグを有効にする」というオプションがあります。
>
> ここのチェックが外れていると、Nativeコードのデバッグができません。
>
追記

C++/CLI のプロジェクトでデバッグする場合は、プロジェクトのプロパティの
デバッグのツリーを選択、デバッガの種類(右側のプロパティリストの中間あたり)を
確認してみてください。

通常は自動だと思いますが、マネージのみなどになっていると同様に
Nativeコードのデバッグができません。

引用返信 編集キー/
■79440 / inTopicNo.4)  Re[3]: C++/CLI でSTL をデバッグ
□投稿者/ 雲 (2回)-(2016/04/02(Sat) 10:40:38)
No79438 (とっちゃん さん) に返信

C++/CLIプロジェクトは、ExeとDLLの両方を試しています。

>C++/CLI のプロジェクトはEXEですか?それともDLLですか?

元々、C#→C++/CLI(DLL)→C++(Lib)と言う流れで開発をしていたのですが、
VisualStudio2015 Update1を入れてから、C++ で vectorの表示がデバッガーでさ
れなくなったため、原因の切り分けという意味で C++/CLI を EXEとして作成して
試しています。

なので、C#→C++/CLI(DLL)→C++(Lib)という流れの場合は、C#でネイティブコードのデバッグを
有効にするといチェックボックスは入っています。

また、C++/CLIをEXE単体として試したときには、デバッガの種類は、自動になっています。

検証コードはとっても単純で、C++/CLIをコンソールアプリで作成して、vectorを使うだけなので、
おそらくはデバッガーのビジュアライズの設定とは思うのですが、VisualStduio2015と比較しても
その部分(C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger)あたりは
特に変わっていないようでますます謎が深まっています。

Microsoftとしては、C++/CLIを見捨てる流れなのか(C++/CXへフォーカス?)と疑いたくもなります。

引用返信 編集キー/
■79441 / inTopicNo.5)  Re[4]: C++/CLI でSTL をデバッグ
□投稿者/ とっちゃん (347回)-(2016/04/02(Sat) 12:02:08)
No79440 (雲 さん) に返信
> 検証コードはとっても単純で、C++/CLIをコンソールアプリで作成して、vectorを使うだけなので、
> おそらくはデバッガーのビジュアライズの設定とは思うのですが、VisualStduio2015と比較しても
> その部分(C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger)あたりは
> 特に変わっていないようでますます謎が深まっています。
>
ちょっと時間が取れたので、簡単なプログラムを作って確認してみました。
表示されないのではなくて、オブジェクトの中身が未加工のまま表示されるということですかね?

Update なしでは表示できていたのだとすれば単なるバグだと思います。
Update2 がでてるのでそれを適用してみてダメだったら。。。フィードバックしましょう。



> Microsoftとしては、C++/CLIを見捨てる流れなのか(C++/CXへフォーカス?)と疑いたくもなります。
>
どうですかねぇ?

個人的には、C++/CLI は諸刃の剣というのもありますが、求められるスキルセットが高すぎて万人向けじゃないですし
そもそも加工表示してくれるようになったのって本当にごく最近の話ですからねぇ。。。

変数そのものが見れないなら、どうにもなりませんが、そうじゃないなら、あんまり意識してもねー。。。というのもあります。

中身が見たければ、ウォッチウィンドウで
vectorValue._Mypair._Myval2._Myfirst[3]
というように直接見てしまえばいいだけですし。。。

引用返信 編集キー/
■79442 / inTopicNo.6)  Re[5]: C++/CLI でSTL をデバッグ
□投稿者/ 雲 (4回)-(2016/04/02(Sat) 19:42:56)
No79441 (とっちゃん さん) に返信

>ちょっと時間が取れたので、簡単なプログラムを作って確認してみました。
>表示されないのではなくて、オブジェクトの中身が未加工のまま表示されるということですかね?

はい。未加工というかUpdate1以前と違うというか。突然、vectorの中身が見れなくなってとっても
困りました。納期近いし。

>Update2 がでてるのでそれを適用してみてダメだったら。。。フィードバックしましょう。

Update2が出るまでの辛抱かと思っていましたが、Update2でも改善されていないです。

>個人的には、C++/CLI は諸刃の剣というのもありますが、求められるスキルセットが高すぎて万人向けじゃないですし
>そもそも加工表示してくれるようになったのって本当にごく最近の話ですからねぇ。。。

C++/CLIに求められるスキルセットが高いという認識は無かったので、万人向けと思っていましたし、中さんの参考書を
読んだら(C#とC++の接続に関しては)簡単に使えたので、結構みんな利用しているはずなので、こんな簡単なことは
すぐに誰かが気づくと期待していました。

ということで、フィードバックまでは考えていませんでしたが、Update2まで手つかずということは待っていてもダメかもですね。
引用返信 編集キー/
■79451 / inTopicNo.7)  Re[6]: C++/CLI でSTL をデバッグ
□投稿者/ Azulean (627回)-(2016/04/03(Sun) 21:12:59)
No79442 (雲 さん) に返信
> Update2が出るまでの辛抱かと思っていましたが、Update2でも改善されていないです。

Update のリリースが近いからと言って、躊躇せず、ガンガン、フィードバックを出した方が良いと思います。


> C++/CLIに求められるスキルセットが高いという認識は無かったので、万人向けと思っていましたし、中さんの参考書を
> 読んだら(C#とC++の接続に関しては)簡単に使えたので、結構みんな利用しているはずなので、こんな簡単なことは
> すぐに誰かが気づくと期待していました。

.NET のプログラミングにある程度慣れていること、C++ のプログラミングにある程度慣れていることの両方を求めるので、そのどちらも持たずに C++/CLI を選ぶのは茨の道だと思っています。
どちらもある程度の知識を持っていれば、すんなり入れるかもしれませんが、それなりにスキルをお持ちのことかと思いますので「求められるスキルセットが高い」という表現について、私は同意しますね。
(中さんの参考書はすでに売られていないものですので、その書籍をお持ちということであれば、それなりに使ってきた方と言えます)


なお、すでに C++/CLI での Windows フォームアプリケーション開発が非推奨となってしまっているので、コンソールアプリとか、ネイティブとのつなぎ目とか、力量ある人向けの層になりつつあります。
私もその時期を生きてきた人ではありますが、C# で書ける部分は C# を推奨していますし、若い人が多い中で C++/CLI を混ぜるとろくなことにならないので、「C++/CLI は原則禁止」としています。
そういった開発現場もあるということだけ、参考までに。
引用返信 編集キー/
■79468 / inTopicNo.8)  Re[7]: C++/CLI でSTL をデバッグ
□投稿者/ 雲 (5回)-(2016/04/04(Mon) 22:45:59)
No79451 (Azulean さん) に返信
> Update のリリースが近いからと言って、躊躇せず、ガンガン、フィードバックを出した方が良いと思います。

了解です。フィードバックをしてみました。一応、受付のメールを頂いたので期待せずに待ってます。

> なお、すでに C++/CLI での Windows フォームアプリケーション開発が非推奨となってしまっているので、コンソールアプリとか、ネイティブとのつなぎ目とか、力量ある人向けの層になりつつあります。
> 私もその時期を生きてきた人ではありますが、C# で書ける部分は C# を推奨していますし、若い人が多い中で C++/CLI を混ぜるとろくなことにならないので、「C++/CLI は原則禁止」としています。
> そういった開発現場もあるということだけ、参考までに。

以前はWindows Formでしたが、現在は、WPFへ移行をしました。力量は、自分自身ではそんなに高いという意識はありませんが、それほど多くの現場を知らないので
物差しがいろいろあるということで了解です。C++/CLIを原則禁止としてしまわないとろくなことに成らないというのは、現実としてはやむを得ないとは思いますが
ちょっと残念な感じがします。

No79441 (とっちゃんさん) に返信
>中身が見たければ、ウォッチウィンドウで
>vectorValue._Mypair._Myval2._Myfirst[3]
>というように直接見てしまえばいいだけですし。。。

これ、C++/CLI(Exe)ならOKですが、C#(Exe)→C++/CLI(DLL)→C++(Lib)の形で開発すると、C++(Lib)で使っているvectorは
ウオッチウインドウで直接見ることは出来ないのです。
引用返信 編集キー/
■79469 / inTopicNo.9)  Re[8]: C++/CLI でSTL をデバッグ
□投稿者/ とっちゃん (348回)-(2016/04/05(Tue) 10:10:42)
No79468 (雲 さん) に返信
> >中身が見たければ、ウォッチウィンドウで
> >vectorValue._Mypair._Myval2._Myfirst[3]
> >というように直接見てしまえばいいだけですし。。。
>
> これ、C++/CLI(Exe)ならOKですが、C#(Exe)→C++/CLI(DLL)→C++(Lib)の形で開発すると、C++(Lib)で使っているvectorは
> ウオッチウインドウで直接見ることは出来ないのです。

これは、C++(Lib)のソース上で、そのソースファイル内にある vector が
ウォッチウィンドウに出てこないということですか?
それとも、vector._Mypair などが void* みたいになっていて、具体値が見れないということでしょうか?

C#のプロジェクトからだと、ダメということであれば、C++/CLI のプロジェクトをメインプロジェクトにして
起動するプロセスを、C#にしてみたらどうでしょう?

変わらない気もしますが、VSは、その時アクティブなプロジェクトの設定情報などを初期値的に扱うところがあるので
なにか変わるかもしれません。

引用返信 編集キー/
■79548 / inTopicNo.10)  Re[9]: C++/CLI でSTL をデバッグ
□投稿者/ 雲 (6回)-(2016/04/13(Wed) 21:13:27)
No79469 (とっちゃん さん) に返信
>>>中身が見たければ、ウォッチウィンドウで
>>>vectorValue._Mypair._Myval2._Myfirst[3]
>>>というように直接見てしまえばいいだけですし。。。
>>
>>これ、C++/CLI(Exe)ならOKですが、C#(Exe)→C++/CLI(DLL)→C++(Lib)の形で開発すると、C++(Lib)で使っているvectorは
>>ウオッチウインドウで直接見ることは出来ないのです。
>
> これは、C++(Lib)のソース上で、そのソースファイル内にある vector が
> ウォッチウィンドウに出てこないということですか?
> それとも、vector._Mypair などが void* みたいになっていて、具体値が見れないということでしょうか?

ウオッチウインドウには vector は表示されますが、

>>>vectorValue._Mypair._Myval2._Myfirst[3]

こんな形で展開は出来ません(というか、展開自体が不可)。

何故か知りませんが、ネイティブ互換モードとマネージ互換モードのチェックボックスを両方外すと C# → C++/CLI → C++(Lib) の Lib で利用していた
vector の中身がデバッガーで表示されました。

おまけ。

ついでに、visual Studio 15 で試してみましたが、こちらも、C++/CLIをコンソールアプリで作成して vector を使った場合、デバッガーの表示は
visual studio 2015 と変わらないようです(C# → C++/CLI → C++ まで試す気力なし)

visual studio 15 については、もう一度、フィードバックを日本語で書いておきました。MSまで届くかなぁ。。。
引用返信 編集キー/
■79554 / inTopicNo.11)  Re[10]: C++/CLI でSTL をデバッグ
□投稿者/ とっちゃん (349回)-(2016/04/13(Wed) 22:05:36)
No79548 (雲 さん) に返信
> ウオッチウインドウには vector は表示されますが、
>
> >>>vectorValue._Mypair._Myval2._Myfirst[3]
>
> こんな形で展開は出来ません(というか、展開自体が不可)。
>
デバッグ情報が読み取れていないのかな?
展開できないということは、内部情報の何かを読み取っていないということになると思います。

があんまりよくわからない。。。w

C#から呼び出すC++/CLI のプロジェクトもあるんですが、そこで行ってるのは、
IFileDialog を使ったフォルダ選択だけなので、Native なオブジェクトは、
COM しかないんですよねぇ。。。まぁデバッグでテストコード埋め込んでみれば
というのはあるんですが、実運用してるプロジェクトなのでおいそれと手を入れるわけにもいかず。。。w

> 何故か知りませんが、ネイティブ互換モードとマネージ互換モードのチェックボックスを両方外すと C# → C++/CLI → C++(Lib) の Lib で利用していた
> vector の中身がデバッガーで表示されました。
>
これはこれで、よくわからんですね。。。


> おまけ。
>
> ついでに、visual Studio 15 で試してみましたが、こちらも、C++/CLIをコンソールアプリで作成して vector を使った場合、デバッガーの表示は
> visual studio 2015 と変わらないようです(C# → C++/CLI → C++ まで試す気力なし)
>
> visual studio 15 については、もう一度、フィードバックを日本語で書いておきました。MSまで届くかなぁ。。。

フィードバック自体は、MS本社 で直接受け取っているはずです。そこで日本語(英語以外)の場合は
トランスレートできるところに一度回して翻訳してもらう形になってるみたいです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -