J'aimerais déboguer à distance une application console C # s'exécutant sous Linux à partir de Visual Studio. Voici ce que j'ai trouvé jusqu'à présent:
http://www.mono-project.com/Debugger
Le moteur d’exécution Mono implémente une interface de débogage qui autorise débogueurs et IDE pour déboguer le code managé. Cela s'appelle le Soft Debugger et est pris en charge par MonoDevelop, Xamarin Studio et Visual Studio (lorsque les plugins appropriés sont installés) ainsi que le client SDB en ligne de commande.
Mono fournit une API pour communiquer avec le débogueur et créer votre fichier propres interfaces de débogage via l’assemblage Mono.Debugger.Soft.dll.
La page ci-dessous aborde quelques problèmes liés à l’implémentation actuelle du débogueur MonoVS, mais ils me conviennent tous.
http://mono-project.com/Visual_Studio_Integration
La page contient également des liens vers le guide de démarrage pour MonoVS:
http://mono-project.com/GettingStartedWithMonoVS
Qui contient un lien de téléchargement pour MonoTools:
http://mono-tools.com/download/
Cependant, le lien de téléchargement redirige maintenant vers:
Où on me propose de télécharger Xamarin Studio Starter Edition. En cliquant sur le lien Tarification, je constate que j'ai besoin d'au moins l'édition Business pour le support Visual Studio, à 999 dollars par an. Eh bien non merci.
C'est là que je suis coincé. Quelques spécificités de mon environnement:
Environnement de développement:
Environnement cible:
Je sais que c'est un vieux fil de discussion, mais au cas où quelqu'un (comme moi) n'aurait pas encore trouvé de solution, en cherchant aujourd'hui, j'ai trouvé cette extension Visual Studio 2015 qui fonctionne à merveille: MonoRemoteDebugger for Visual Studio 2015
Voir MonoRemoteDebugger v1.0.4 pour résoudre le conflit avec l'extension Xamarin VS sur VS2015 update2.
J'espère que ça aide.
Bon débogage et merci au développeur! :)
J'ai trouvé ce guide expliquant comment effectuer un débogage à distance sous Linux, sous Windows, en utilisant Xamarin Studio, qui est maintenant gratuit, sauf pour le développement iOS et Android. Je l'ai développée avec des corrections pour les problèmes rencontrés lors du test sur un Raspberry Pi Zero W exécutant Raspbian Jessie Lite (2017-04-10).
MONODEVELOP_SDB_TEST = 1
(Poste de travail -> Propriétés -> Paramètres système avancés -> Variables d'environnement).%localappdata%\XamarinStudio-6.0\Logs
pour voir ce qui a échoué.PdbDebugException: Unknown custom metadata item kind: 6
).pdb2mdb MyProgram.exe
Sudo apt-get install mono-complete
.mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe
. Cela démarrera le programme mais interrompra l'exécution jusqu'à la connexion du débogueur Xamarin Studio.Run -> Run with -> Custom Configuration...
et sélectionnez Run Action = Debug - Custom Command Mono Soft Debugger
. Cliquez sur Debug
.IP
et Port
avec l'adresse IP de votre système linux et le port 12345, comme indiqué dans la ligne de commande Mono. Cliquez sur Connect
et l'exécution commencera en s'arrêtant au point d'arrêt défini.Il est possible de définir des points d'arrêt conditionnels, d'entrer et de sortir du code, de surveiller des primitives, des objets, etc., et c'est également assez rapide. Je préfère déboguer directement à partir de Visual Studio, mais cela semble être une solution pleinement opérationnelle.
En me basant sur la réponse de Gutemberg Ribeiro , j'ai réussi à obtenir MonoRemoteDebugger en travaillant avec VS2015 sur un Raspberry Pi Zero W exécutant Raspbian Jessie Lite (2017-04-10). L'astuce consistait à installer une version Mono ultérieure à la version 3.2.8:
Sudo apt-get purge mono-complete
Sudo apt-get autoremove
Sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://plugwash.raspbian.org/mono4 jessie-mono4 main" | Sudo tee -a /etc/apt/sources.list
Sudo apt-get update
Sudo apt-get install mono-complete
wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.Zip
unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.Zip
mono MonoRemoteDebugger.Server/MonoRemoteDebugger.Server.exe
MonoRemoteDebugger -> Debug with Mono (remote)
dans Visual Studio.Pour être honnête, les capacités de débogage sont assez limitées. Les points d'arrêt simples et les codes d'entrée/sortie/sortie semblent fonctionner assez bien. Définir un point d'arrêt dans une fonction, puis passer au-dessus de cet appel de fonction ne s'arrêtera pas au point d'arrêt.
Les types primitifs peuvent être regardés, mais les objets que j'ai essayé de regarder ne peuvent pas être affichés. La vue Call Stack est assez limitée et la vue Threads est vide. Les exceptions ne sont pas interceptées, mais le message "[ERREUR] FATAL UNHANDLED EXCEPTION" est envoyé par MonoRemoteDebuggerServer. Mais si vous pouvez vivre avec ces limitations, la configuration est plus simple que la route Xamarin Studio .
Il y a un plugin pour Xamarin Studio/MonoDevelop
La solution dont vous avez besoin arrive cette année avec MonoDebugger.NET . Le ou les développeurs "promettent" que nous pouvons déployer sur n'importe quel appareil Mono et le déboguer dans Visual Studio (2010 à 2015).