Microsoft Visual Studio nutzen, um im Microsoft Dynamics NAV RTC zu debuggen

Microsoft Visual Studio nutzen, um im Microsoft Dynamics NAV RTC zu debuggen

  • Comments 1

Manchmal ist es notwendig auch den Code einer Page zum Beispiel Schritt für Schritt durchzugehen. Genutzt werden kann dazu das Visual Studio mit folgenden einfachen Schritten. In der CustomSettings.config muss das Debuggen aktiviert werden, indem „EnableDebugging“ von „false“ auf „true“ geändert wird.

<add key="EnableDebugging" value="true"></add>

1. Der Service muss nun neu gestartet werden.

2. Ebenso muss der RTC neu gestartet werden.

Der erste Start des RTC wird nun länger dauern, da im Verzeichnis

C:\ProgramData\Microsoft\Microsoft Dynamics NAV\60\Server\MicrosoftDynamicsNavServer\source

für jedes Objekt eine Code Datei im C# Format angelegt wird. In diesem Beispiel wollen wir Code in der Page18 Schritt für Schritt durchgehen. Dafür öffnen wir die entsprechende Datei im Visual Studio die wir später Debuggen wollen. Dafür muss das Visual Studio schon mit Administratorrechten gestartet worden sein.

clip_image002

In den Kommentaren sind die C/AL Kommandos angegeben und darunter der entsprechende C# Code. So ist der Code auch für C/AL Entwickler lesbar und die entsprechenden Code Stellen können in der Entwicklungsumgebung von Microsoft Dynamics NAV auch einfach gefunden werden. Ich habe nun Beispielhaft in der Page30 eine Zeile angefügt und möchte, dass der Debugger genau an der Stelle startet, wenn in der Page der Code ausgeführt wird. Hier im OnValidate() der Beschreibung. Im Visual Studio kann ich mit „F9“ einen Haltepunkt setzen:

clip_image003

Die Zeile wird nun rot markiert. Jetzt muss Visual Studio noch wissen, welches Programm überhaupt Untersucht werden soll. Dazu muss der laufende Prozess des RTCs mit Visual Studio verbunden werden. Wichtig ist, das Visual Studio dazu vorher als Administrator gestartet worden ist, sonst wird dies automatisch beim Auswählen des Prozesses nachgeholt – allerdings muss die Source Code Datei neu geöffnet werden und auch das „Attach to Process…“ muss neu aufgeführt werden.

clip_image004

In der Übersicht den Prozess vom Client wählen: Microsoft.Dynamics.Nav.Server.exe und

clip_image005

mit „Attach“ bestätigen. Laufen mehrere NAV Server, natürlich den richtigen auswählen.

Jetzt im RTC das entsprechende Objekt öffnen:

clip_image007

Ändere ich nun in der Beschreibung den Text, greift der Code, den ich in den OnValidate() Trigger platziert habe:

clip_image008

Und der Debugger springt an meine markierte Stelle und ich kann mir die Belegung der Variablen anschauen und mit F11 / F10 durch den Code steppen. Lasse ich mir zu viel Zeit, meldet sich der RTC mit einer Timeout Meldung, ich kann dort jedoch einfach bestätigen, dass er es doch bitte weiter versuchen soll und kann „normal“ weiter arbeiten. Springe ich im Debugger von einem Objekt in ein anderes, zum Beispiel durch einen Funktionsaufruf, so wird automatisch die richtige Source Code Datei geöffnet. Mit F5 kann ich den normalen Ablauf wieder starten.

Die Informationen im Debugger sind sehr ausführlich, wie man zum Beispiel an der Variable unten im „Watch“ sehen kann, wo ich eine Buchblattzeile aus der Codeunit 12 eingefügt habe.

clip_image010

 

Erweiterung zum bestehenden Blogeintrag 11.05.2012

Typenkonvertierungsfehler oder ähnliches  kann man so finden. Ich habe einmal testweise in Report 116 folgende Zeile eingebaut.

clip_image002[1]

Die Variable xxx ist Code und hat die Länge 3. Wenn ich nun das Debugging starte, sprich in Visual Studio den Prozess verbinde und dann den RTC starte und den Report aufrufe, springt der Debugger direkt in die richtige Datei und steht auf dem Fehler.

clip_image003

Den gleichen Effekt bekomme ich auch bei einer eingebauten „Error“ Meldung.

clip_image004

Oder auch bei den Standardfehlermeldungen wie diesen:

clip_image005

Wenn Sie absichtlich einen Fehler eingebaut haben und es nicht funktioniert hat, kann es daran liegen, dass eine Code Änderung erst nach Server Stoppen / Server Starten / RTC neu starten auch neu in den erzeugten C# Dateien sichtbar wird.

 

Herzliche Grüsse,

Andreas Günther
EMEA Customer Support & Services - SMS&P

Leave a Comment
  • Please add 8 and 7 and type the answer here:
  • Post
  • Sehr schön,

    vielen Dank für die tolle Beschreibung.

    Wie kann man aber denn debuggen, wenn man "richtige Fehler" finden möchte?

    Bsp: Typkonvertierungsfehler ..... ich möchte dann wie im Classic direkt an die richtige Stelle (naja oder wenigstens in die nähe dieser ;) ) springen und nicht erst die komplette Page bzw. das komplette Objekte durchlaufen. Bisher springt der VS-Debugger dann nicht in den Code, jedenfalls bei mir nicht :/

    Gibt es denn dazu auch "schon" eine Idee?

Page 1 of 1 (1 items)