Ursache von Fehlermeldungen ermitteln

In Dynamics AX können unterschiedliche (Fehler-)Meldungen auftreten, die meisten kommen von der Applikation, es gibt aber auch Meldungen, die vom AX-Client ausgegeben werden.

Leider sind nicht alle Meldungen so sprechend, daß man (als Entwickler) sofort weiß, was nun zu tun ist. Deshalb gibt es, je nachdem um welche Art von Fehlermeldung es sich handelt, unterschiedliche Herangehensweisen, wie man die Ursache der Meldung findet.

Meldung über das Infolog der Applikation

Screenshot InfologBei manchen Meldungen genügt ein Doppelklick auf die Meldung im Infolog und man landet im Code, welcher die Meldung geworfen hat (vorausgesetzt man befindet sich als Benutzer gerade im Entwicklungsmodus).

Kommt man über das Infolog nicht an jene Codestelle, wo die Meldung ausgegeben wird so hat man als Entwickler noch die Möglichkeit, den Text der Meldung im Label-Editor einzugeben und sich das dazu passende Label zu suchen. Findet man ein solches, kann man über die Querverweise die Codestelle(n) ermitteln, wo dieses Label verwendet wird.

Nun kann man einerseits den Code lesen bzw. analysieren und oft wird dadurch klar, wo der Fehler liegt. Bei komplizierteren Aufrufen muss man schon mal den Debugger zur Hilfe nehmen, d.h. an die jeweilige Codestelle einen Breakpoint setzen, den Fehler neu "auslösen" und nun über den Stacktrace die Ursache ergründen.

Hilft keine der oben genannten Vorgehensweise, dann kann man sich natürlich auch noch des Internets bedienen: Einfach die Meldung bzw. signifikante Teile daraus (eine Meldung die eine spezifische Auftragsnummer enthält wird man mit an Sicherheit grenzender Wahrscheinlichkeit so nicht im Internet finden) in die Suchmaschine seiner Wahl eintragen.

Dabei sollte man darauf achten, daß man die Meldung in englischer Sprache bzw. den Text des englischen Labels der Internet-Suche übergibt. Das erhöht die Trefferwahrscheinlichkeit enorm! Auch hier gilt der obige Hinweis bezügl. signifikanter Teile der Meldung.

Wer Zugriff auf die Microsoft Partnersource bzw. die Microsoft Lifecycle-Services hat sollte seine Suche unbedingt auch in diesen Tools durchführen.

Meldungen vom Client

Kommt die (Fehler-)Meldung direkt vom Client, wird es - soferne der Client nicht gerade in englische Sprache läuft - etwas komplizierter. Hat man bereits eine englischsprachige Meldung kann man sich gleich der Internetsuche, wie oben beschrieben, widmen.

Liegt die Meldung in einer anderen Sprache vor, kann man entweder

  • den Client in Englisch starten (beispielsweise kann man einen Shortcut zur AX32.exe um den Parameter -language=en-us erweitern) und jene Dinge tun, die den Fehler verursachen
  • die Meldung ins englische übersetzen

Um die Meldung ins englische zu übersetzen kann man sich die KTD-Dateien (*.ktd) im Client-Verzeichnis (beispielweise C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin für AX 2012) zur Hilfe nehmen.
 
Dazu sind folgende Schritte notwendig:

  • Man sucht sich die KTD-Datei in jener Sprache, in welcher die Meldung aufgetreten ist. Für eine deutschsprachige Meldung würde ich also die AxSysDE.ktd öffnen (Notepad reicht) und darin nach der Meldung suchen.
  • Üblicherweise sind diese Meldungen in "Bereiche" gegliedert die mit einer Nummer (mit einer führenden #) beginnen, diese Nummer sollte man sich nun notieren
  • Nun öffnet man sich die KTD-Datei in englischer Sprache, beispielsweise AxSysEN-US.ktd und sucht nach der zuvor notierten Nummer. Unterhalb dieser Nummer sollte der englischsprachige Text der Meldung zu finden sein

Hat man nun die (Fehler-)Meldung in englischer Sprache, gilt es die bereits genannten Möglichkeiten zu nutzen (Suchmaschine, MS Partnersource, MS Lifecycle-Services).

 

Dieser Beitrag bezieht sich auf die Versionen:
Axapta 2.5, Axapta 3.0, Dynamics AX 4.0, Dynamics AX 2009, Dynamics AX 2012

Chens 10.06.2014 18:19 | #1

Über den Labeleditor die Fehlermeldung suchen ist ziemlich kompliziert und ggf. ungenau.

Um jede Fehlermeldung, welche über den Infolog ausgegeben wird, direkt zu finden, kann man einfach einen Breakpoint in die add() Methode der Klasse Info setzen. Führt man dann die Funktion erneut aus, wird der Debugger am Haltepunkt halten und man kann im Callstack sehen, welche Fehlermeldung aus welchem Grund erscheint.

Kommentar hinzufügen
 
 
 

 

 
 
 
Beiträge des aktuellen Monats
Juni 2019
MoDiMiDoFrSaSo
 12
3456789
10111213141516
17181920212223
24252627282930
 
© 2006-2019 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu