
Ubuntu Linux 15.10 プラットフォームで Monodevelop デバッガーを使用して、mono 環境で実行されているマネージ C# 実行可能ファイルがアンマネージ C++ 共有オブジェクトのコードにステップインする方法を知りたいです。Monodevelop バージョンは 5.5、mono バージョンは Mono JIT コンパイラー バージョン 3.2.8 (Debian 3.2.8+dfsg-4ubuntu4)、.NET バージョンは 4.5 です。アンマネージ C++ 共有オブジェクトのコードにステップインするために gdb を使用しました。ただし、Ubuntu Linux 15.10 プラットフォームでは、マネージ C# コードとアンマネージ C# コードの両方に Monodevelop デバッガーのみを使用したいと考えています。よろしくお願いします。
答え1
基本的にこれはサポートされていないという通知を受けました。これを機能させる試みはいくつかありましたが、機能させるための時間と関心が不足しています。
https://github.com/mono/debugger-libs/tree/lldb-debugging
プルリクエストはいつでも歓迎します
答え2
C#/.NETソリューションをMonodevelopにロードし、ビルドしてデバッグしながら実行します。
ps -ef mono自体は、コードがプロセスをフォークしない限り、プロセスをフォークしないことに注意してください...マネージC# xyz.exeはmonoプロセス内にロードされ、フォークなしで1つとして実行されます
対象のモノプロセスのプロセスID(PID)を特定します。/usr/bin/mono --debug --debugger-agent (この例では7575)
シンボル テーブルを作成するには、アンマネージ 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 これはフリーソフトウェアです。変更や再配布は自由です。法律で認められている範囲で、保証はありません。詳細については、「show copying」および「show warranty」と入力してください。この GDB は「x86_64-linux-gnu」として構成されています。構成の詳細については、「show configuration」と入力してください。バグ報告の手順については、以下を参照してください。 http://www.gnu.org/software/gdb/bugs/GDB マニュアルおよびその他のドキュメント リソースは、次の場所でオンラインで見つかります。 http://www.gnu.org/software/gdb/documentation/ヘルプを表示するには、「help」と入力してください。「apropos word」と入力して、「word」に関連するコマンドを検索してください... 7575: そのようなファイルまたはディレクトリはありません。 (gdb) file BuildIPCameraListLinux.exe BuildIPCameraListLinux.exe からシンボルを読み込んでいます...(デバッグ シンボルが見つかりません)...完了しました。 (gdb) break ClickItCameraList.cpp:176 シンボル テーブルがロードされていません。「file」コマンドを使用してください。 今後の共有ライブラリのロード時にブレークポイントを保留にしますか? (y または [n]) y ブレークポイント 1 (ClickItCameraList.cpp:176) が保留中です。 (gdb) 実行 開始プログラム: /home/venkat/InteroperabilityTest/MySQLVersion/Debug/BuildIPCameraListLinux.exe 警告: 選択されたアーキテクチャ i386 は、報告されたターゲット アーキテクチャ i386:x86-64 と互換性がありません 警告: アーキテクチャが拒否されました ターゲット提供の説明 add-symbol-file-from-memory はこのターゲットではサポートされていません プロセス 7592 が新しいプログラムを実行しています: /usr/bin/mono-sgen [libthread_db を使用したスレッド デバッグが有効] ホスト libthread_db ライブラリ "/lib/x86_64-linux-gnu/libthread_db.so.1" を使用しています。 [新しいスレッド 0x7ffff471f700 (LWP 7597)] ブレークポイント 1、CreateSupportedCameraList ()、./ClickItCameraList.cpp:176 176 { (gdb) ステップ 180 std::map > vendorMap; (gdb) std::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=0x7fffffffd160) を実行します。/usr/include/c++/5/bits/stl_tree.h:807 807 _Rb_tree() { } (gdb) ステップ std::_Rb_tree、std::allocator > >、std::_Select1st、std::allocator > > >、std::less、std::allocator、std::allocator > > > >::_Rb_tree_impl、false>::_Rb_tree_impl (this=0x7fffffffd160) /usr/include/c++/5/bits/stl_tree.h:588 588 _M_node_count(0) (gdb) 続行 続行中。 ここにいるよ 保存 OKAY プログラムはシグナル SIGPWR、電源障害/再起動を受信しました。 [スレッド 0x7ffff471f700 (LWP 7597) に切り替えています] 0x00007ffff74b60c9 in futex_abstimed_wait (cancel=true、private=、abstime=0x0、expected=0、futex=0x98a680 ) at sem_waitcommon.c:42 42 sem_waitcommon.c: そのようなファイルまたはディレクトリはありません。(gdb)
ご質問がございましたらお知らせください。