web-dev-qa-db-de.com

Mono-Remote-Debugging aus Visual Studio

Ich möchte eine C # -Konsolenanwendung, die unter Linux ausgeführt wird, von Visual Studio aus remote debuggen. Folgendes habe ich bisher gefunden:

http://www.mono-project.com/Debugger

Die Mono-Laufzeitumgebung implementiert eine Debugging-Schnittstelle, die es ermöglicht Debugger und IDEs zum Debuggen von verwaltetem Code. Dies wird als Soft .__ bezeichnet. Debugger und wird von MonoDevelop, Xamarin Studio und .__ unterstützt. Visual Studio (wenn die entsprechenden Plugins installiert sind) sowie der Befehlszeilen-SDB-Client.

Mono bietet eine API zur Kommunikation mit dem Debugger und zum Erstellen Ihres eigene Debugging-Benutzeroberflächen über die Mono.Debugger.Soft.dll-Assembly.

Auf der folgenden Seite werden einige Probleme der aktuellen MonoVS-Debugger-Implementierung besprochen, die jedoch alle gut für mich sind.

http://mono-project.com/Visual_Studio_Integration

Die Seite enthält auch einen Link zum Handbuch "Erste Schritte" für MonoVS:

http://mono-project.com/GettingStartedWithMonoVS

Enthält einen Download-Link für MonoTools:

http://mono-tools.com/download/

Der Download-Link leitet jedoch jetzt weiter zu:

http://xamarin.com/download/

Wo kann ich die Xamarin Studio Starter Edition herunterladen? Wenn Sie auf den Preislink klicken, sehe ich, dass ich mindestens die Business Edition für Visual Studio Support benötige (999 USD pro Jahr). Nein, nein, danke.

Hier stecke ich fest. Einige Besonderheiten meiner Umgebung:

Entwicklungsumgebung:

  • Windows 7 64-Bit
  • Visual Studio Pro 2013 (kann 2010 verwenden, wenn dies besser funktioniert)

Zielumgebung:

  • Himbeer-Pi
  • Raspbian Wheezy
  • Mono 3.2.8
  • Konsolenanwendung über SSH ausführen
29
Anlo

Ich weiß, es ist ein alter Thread, aber für den Fall, dass jemand (wie ich) noch keine Lösung dafür gefunden hat, habe ich beim Suchen heute diese Erweiterung für Visual Studio 2015 gefunden, die wie ein Zauber wirkt: MonoRemoteDebugger für Visual Studio 2015

Siehe MonoRemoteDebugger v1.0.4 , um einen Konflikt mit der Xamarin VS-Erweiterung in VS2015 Update2 zu beheben.

Ich hoffe, es hilft.

Viel Spaß beim Debuggen und danke an den Entwickler! :)

17

Ich habe this guide gefunden, in dem erklärt wird, wie Remote-Debugging unter Linux von Windows aus mit Xamarin Studio durchgeführt wird, das jetzt außer für iOS- und Android-Entwicklung kostenlos ist. Ich habe es mit Korrekturen für die Probleme erweitert, die ich beim Testen auf einem Raspberry Pi Zero W mit Raspbian Jessie Lite (2017-04-10) hatte.

  1. Laden Sie Xamarin Studio , GTK # für .NET und .NET Framework 4.6.2 herunter, und installieren Sie sie. Für Xamarin Studio ist .NET 4.5 erforderlich, für GTK # jedoch .NET 4.6. Ich habe Xamarin Studio Version 6.1.2 (Build 44) ​​und GTK # Version 2.12.44 verwendet.
  2. Ich installierte Xamarin Studio auf einer anderen virtuellen Maschine als meine VS2015-Maschine. Daher musste ich MSBuild Tools 2013 und MSBuild Tools 2015 auch herunterladen und installieren.
  3. Erstellen Sie eine Umgebungsvariable MONODEVELOP_SDB_TEST = 1 (Arbeitsplatz -> Eigenschaften -> Erweiterte Systemeinstellungen -> Umgebungsvariablen).
  4. Starten Sie Xamarin Studio. Wenn kein Fenster angezeigt wird, überprüfen Sie die Protokolldateien im Ordner %localappdata%\XamarinStudio-6.0\Logs, um festzustellen, was fehlgeschlagen ist.
  5. Ich habe eine .NET 4.6-Konsolenanwendung in Visual Studio 2015 erstellt und das NuGet-Paket Mono.Unofficial.pdb2mdb hinzugefügt. Ich habe Version 4.2.3.4 verwendet. Das Paket Mono.pdb2mdb Version 0.1.0.20130128 scheint nicht mit Baugruppen zu funktionieren, die von VS2015 (PdbDebugException: Unknown custom metadata item kind: 6) erstellt wurden.
  6. Laden Sie die .sln- oder .csproj-Datei aus Visual Studio in Xamarin Studio. Erstellen Sie die Projektmappe und verwenden Sie das Tool pdb2mdb aus dem NuGet-Paketordner, um eine MDB-Datei zu erstellen: pdb2mdb MyProgram.exe
  7. Ich habe WinSCP verwendet, um MyProgram.exe und MyProgram.exe.mdb auf meinen Raspberry Pi zu kopieren.
  8. Ich habe mich mit PuTTY mit SSH angemeldet und die Mono-Version 3.2.8 auf dem Pi: Sudo apt-get install mono-complete installiert.
  9. Starten Sie die Mono-Laufzeit mit Debuggerflags: mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe. Dadurch wird das Programm gestartet, aber die Ausführung wird angehalten, bis der Xamarin Studio-Debugger eine Verbindung hergestellt hat.
  10. Legen Sie in Xamarin Studio einen Haltepunkt fest und wählen Sie den Menüpunkt Run -> Run with -> Custom Configuration... und dann Run Action = Debug - Custom Command Mono Soft Debugger. Klicken Sie auf Debug.
  11. Füllen Sie die Felder IP und Port mit der IP-Adresse Ihres Linux-Systems und Port 12345, wie in der Mono-Befehlszeile angegeben. Klicken Sie auf Connect. Die Ausführung beginnt am Haltepunktsatz.

Screenshot of Xamarin Studio Debugging

Es ist möglich, bedingte Haltepunkte festzulegen, in/aus/über Code zu springen, Grundelemente und Objekte usw. zu beobachten, und es ist auch ziemlich schnell. Ich würde lieber direkt in Visual Studio debuggen, aber dies scheint eine voll funktionsfähige Lösung zu sein.

3
Anlo

Aufbauend auf der Antwort von Gutemberg Ribeiro ist es mir gelungen, MonoRemoteDebugger mit VS2015 an einem Raspberry Pi Zero W zu arbeiten, auf dem Raspbian Jessie Lite (2017-04-10) läuft. Der Trick bestand darin, eine Mono-Version nach 3.2.8 zu installieren:

  1. Installieren Sie die Erweiterung MonoRemoteDebugger Visual Studio. Ich habe Version 1.2.0 verwendet.
  2. Erstellen Sie eine .NET 4.6-Konsolenanwendung in Visual Studio.
  3. Wenn auf dem Raspberry Pi eine ältere Mono-Version installiert ist, entfernen Sie sie mit den Befehlen:

    Sudo apt-get purge mono-complete

    Sudo apt-get automatisch entfernen

  4. Mono Version 4.0.2 installieren:

    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 installiert mono-complete

  5. Installieren Sie den MonoRemoteDebugger-Server:

    wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.Zip

    unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.Zip

  6. Starten Sie den MonoRemoteDebugger-Server:

    mono MonoRemoteDebugger.Server/MonoRemoteDebugger.Server.exe

  7. Legen Sie in Visual Studio einen Haltepunkt fest und wählen Sie in Visual Studio den Menüpunkt MonoRemoteDebugger -> Debug with Mono (remote) aus.
  8. Legen Sie für Remote-IP die IP-Adresse des Raspberry Pi fest und klicken Sie auf Verbinden. MonoRemoteDebugger wird das Programm kompilieren und auf den Raspberry Pi übertragen. Sie müssen pdb2mdb nicht manuell ausführen. Die .mdb-Datei wird vom MonoRemoreDebugger-Server erstellt.

 Screenshot

Um ehrlich zu sein, sind die Debugging-Funktionen ziemlich begrenzt. Einfache Haltepunkte und das Ein- und Ausschalten von Code scheinen etwas in Ordnung zu sein. Das Festlegen eines Haltepunkts in einer Funktion und das anschließende Überschreiten des Funktionsaufrufs wird nicht am Haltepunkt angehalten.

Primitive Typen können beobachtet werden, aber die Objekte, die ich zu sehen versucht habe, können nicht angezeigt werden. Die Call Stack-Ansicht ist ziemlich eingeschränkt und die Threads-Ansicht ist leer. Ausnahmen werden nicht abgefangen, sondern führen zu einer Meldung "[ERROR] FATAL UNHANDLED EXCEPTION" vom MonoRemoteDebuggerServer. Wenn Sie jedoch mit diesen Einschränkungen leben können, ist die Einrichtung einfacher als die Xamarin Studio-Route .

0
Anlo

Es gibt ein Plugin für Xamarin Studio/MonoDevelop

https://github.com/logicethos/SSHDebugger

0
FlappySocks

Die Lösung, die Sie benötigen, wird dieses Jahr mit MonoDebugger.NET veröffentlicht. Die Entwickler "versprechen", dass wir sie auf jedem Mono-Gerät bereitstellen und in Visual Studio (2010 bis 2015) debuggen können.

0
dayanruben