Mono環境で実行されているマネージC#実行可能ファイルがUbuntu Linux 15.10プラットフォームのMonodevelopデバッガを使用して、アンマネージC ++共有オブジェクトのコードに入る方法を知りたいと思います。 Monodevelopバージョンは5.5、モノバージョンはMono JITコンパイラバージョン3.2.8(Debian 3.2.8 + dfsg-4ubuntu4)、.NETバージョンは4.5です。私は、管理されていないC ++共有オブジェクトコードを使用するためにgdbを使用しました。しかし、私たちは管理されたC#コードと管理されていないC#コードの両方にUbuntu Linux 15.10プラットフォームのMonodevelopデバッガだけを使用しようとしています。よろしくお願いします。
答え1
私はこれが基本的にはサポートされておらず、誰かがこれを実行しようとしましたが、それがうまくいく時間と興味がないことを知らせました。
https://github.com/mono/debugger-libs/tree/lldb-debugging
PullRequestはいつでも歓迎します
答え2
C#/ .NETソリューションをMonodevelopにロードし、ビルドとデバッグを実行する
ps -efコードがそうでない場合、モノ自体はプロセスを分岐しません。管理されたC#xyz.exeはモノラルプロセスの内部にロードされ、分岐していないプロセスとして実行されます。
関心のあるモノプロセスのプロセスID(PID)を識別します。
管理されていないC ++共有オブジェクトは、-gでコンパイルしてシンボルテーブルを作成する必要があります。
~/InteroperabilityTest/MySQLVersion/Debug$ sudo gdb 7575 GNU gdb (Ubuntu 7.10-1ubuntu2) 7.10 Copyright (C) 2015 Free Software Foundation, Inc.ライセンスGPLv3+:GNU GPLバージョン3以降http://gnu.org/licenses/gpl.html これはフリーソフトウェアなので、自由に変更して再配布できます。法律が許す限り、いかなる保証も提供されません。詳細については、「コピーマーク」と「保証マーク」を入力してください。このGDBは「x86_64-linux-gnu」で構成されています。設定の詳細については、「showconfiguration」と入力してください。エラー報告の手順については、次を参照してください。 http://www.gnu.org/software/gdb/bugs/。 GDBのマニュアルやその他のドキュメントリソースをオンラインで見つけてください。 http://www.gnu.org/software/gdb/documentation/。ヘルプが必要な場合は、「help」と入力してください。 「単語」に関連するコマンドを検索するには、「apropos word」と入力してください... 7575:そのファイルまたはディレクトリはありません。 (gdb)ファイルBuildIPCameraListLinux.exe BuildIPCameraListLinux.exeからシンボルを読み込んでいます...(デバッグシンボルが見つかりません)...完了。 (gdb) ClickItCameraList.cpp:176 シンボルテーブルがロードされませんでした。 「ファイル」コマンドを使用してください。将来の共有ライブラリのロードにブレークポイントを設定しますか? (y または [n]) y ブレークポイント 1(ClickItCameraList.cpp:176) 保留中です。 (gdb)ランチャー:/home/venkat/InteroperabilityTest/MySQLVersion/Debug/BuildIPCameraListLinux.exe警告:選択したアーキテクチャi386は、報告されたターゲットアーキテクチャi386:x86-64と互換性がありません。警告:ターゲット提案はアーキテクチャによって拒否されました。 add-symbol - このターゲットプロセスはメモリ内のファイルをサポートしません。 7592新しいプログラムを実行しています。/usr/bin/mono-sgen [libthread_dbでスレッドをデバッグする]だから.1". [新しいスレッド0x7ffff471f700 (LWP 7597)] ブレークポイント 1, CreateSupportedCameraList () at ./ClickItCameraList.cpp:176 176 { (gdb) map, std:: allocator >, std::less, std::allocator, std::allocator > > > >::map( this=0x7fffffffd160) /usr/include/c++/5 /bits/stl_map.h:166 166に位置: _M_t( ) { } (gdb) ステップ std::_Rb_tree, std::allocator >>, std::_Select1st, std::allocator >>>, std::less, std::allocator, std: :allocator>> > > ::_Rb_tree (this=0x7ffffffffd160) /usr/include/c++/5/bits/stl_tree.h:807 807 807 _Rb_tree() { } (gdb) ステップ std::_Rb_tree, std >>, std: :_Select1st, std::allocator >>>, std::less, std::allocator, std::allocator>>>>::_Rb_tree_impl, false >::_Rb_tree_impl (this=0x7ffffffffd160) / usr /include/c++ /5/bits/stl_tree.h:588 _M_node_count(0) (gdb) ここに保存します。 )に切り替える] sem_waitcommon.c:42 42 sem_waitcommon.c: 0x00007ffff74b60c9 in futex_abstimed_waitありません。 (gdb)
ご不明な点がございましたらお知らせください。