messages

___ qstntxt ___

In einem Modul, das ich schreibe, habe ich (für die Entwicklungs- und Testphasen) viele %code% . Ich habe zwei Fragen:

  1. Was ist die beste Vorgehensweise, um solche "Debugging" -Nachrichten zu drucken?
  2. Gibt es eine Möglichkeit, das Modul so aufzurufen, dass die Nachrichten NICHT gedruckt werden? Wenn ich beispielsweise das Modul von einem anderen Modul aus anrufe, möchte ich nicht die gesamte Ausgabe des ersten Moduls sehen.
___ answer5122428 ___

Mein älterer Code verwendet eine Methode wie Pillsy beschreibt.

Vor kurzem habe ich einen Kopf, der normalerweise keine Regeln hat, wie:

%Vor%

und dann eine zweite Funktion:

%Vor%

Wenn ich dann die Debugging-Ausgabe sehen möchte, kann ich PrintDebug um die Eingabe wickeln:

%Vor%

oder häufiger als

%Vor%

da ich finde, dass das Postfixformular einfacher hinzuzufügen / zu entfernen ist und den Fokus besser auf der Hauptfunktion belassen.

    
___ answer8699834 ___

Normalerweise installiere ich eine verbosing-Option in meine Funktionen, die bei Bedarf zum Debuggen ein- und ausgeschaltet werden kann. Beachten Sie, dass Sie bei der Angabe des Standards für Verbose innerhalb der Funktion steuern können, ob die Information gedruckt wird oder nicht.

%Vor%

Natürlich kann man dieses Beispiel so ausarbeiten, dass es den Programmierstandards von Mathematica entspricht (z. B. den Header %code% hinzufügen und dann auf die Optionen innerhalb der Funktion zugreifen, aber das ist nicht der Punkt hier.

    
___ answer8699078 ___

Noch eine andere Möglichkeit:

%Vor%

Verwenden Sie die Funktion wie folgt:

%Vor%

Schalte Nachrichten wie folgt ein oder aus:

%Vor%     
___ answer8698944 ___

Da M keinen integrierten Debugger hat, um zu sprechen, verschwende ich 50% meiner Zeit nur mit dem Debuggen, das gespeichert werden könnte, wenn es einen Debugger gäbe. 50% meines Entwicklungscodes sind Print-Anweisungen, denn ohne diese würde ich nicht herausfinden, woher ein Fehler kommt. (Das ist auch schlecht, da zu viele Drucknachrichten im Code es manchmal schwierig machen, den Algorithmus zu sehen, er kommt in die Quere, kann ihn aber nicht entfernen, da ich ihn später vielleicht brauche).

Ich finde es erstaunlich, dass ein solch leistungsfähiges und flexibles Rechenwerkzeug wie M immer noch eine relativ weniger fortgeschrittene Entwicklungsumgebung hat. Wenn ich Matlab benutze, brauche ich einige Sekunden, um herauszufinden, wo sich ein Fehler befindet, indem ich den Debugger benutze.

Jemand könnte sagen, dass Sie Workbench zum Debuggen verwenden. Ich habe versucht, eine Manipulate Demo zu debuggen, und ich kann es nicht herausfinden. Zu kompliziert zu verwenden. M benötigt einen einfach zu verwendenden Debugger-Build-In (im Notebook selbst, kein separates Programm) und mit Zeilennummern!

Ok, angesichts der obigen Einführung :), das ist, was ich selbst als Antwort auf Ihre Frage mache:

  1. haben unterschiedliche Debug-Nachrichten. grobe Ebene und detaillierte Ebene. Coarse level druckt nur eine Nachricht, wenn eine Funktion aufgerufen wird und wenn die Funktion vorhanden ist.

  2. Ich habe eine Schaltfläche auf der Benutzeroberfläche, mit der Debugging ein- und ausgeschaltet werden kann (wenn Sie ein auf der Benutzeroberfläche basierendes Programm verwenden, sonst wird es im Code enthalten sein).

  3. Verwenden Sie eine separate Debug-Funktion, bei der die Debugging-Meldung durchlaufen wird, bevor sie gedruckt wird. Dort können Sie jeder Nachricht vor dem Drucken einen Zeitstempel hinzufügen (kann auch steuern, ob Nachrichten von einem Ort in eine Textdatei gelangen sollen). Rest Ihres Codes, ruft diese Debug-Funktion nur mit der zu druckenden Nachricht auf. Ich drucke alles jetzt zur Konsole, nicht zum aktuellen Notebook.

  4. Jede Debug-Nachricht hat den Funktionsnamen, der sie am Anfang aufgerufen hat.

  5. Wenn Sie das Debugging auf der Modulebene steuern wollen, was ich mache, machen Sie einfach ein lokales Debugflag innerhalb des Moduls und schalten es jedes Mal an / aus, wenn ich dieses ein bestimmtes Modul debuggen möchte. Dieses lokale Debug-Flag übernimmt die Einstellung des globalen Debug-Flags. Auf diese Weise kann ich nur ein Modul debuggen, wenn ich möchte, und nicht den Rest des Codes.

Es gibt viele andere Möglichkeiten, all dies anzupassen. Aber ich habe festgestellt, dass, wenn ich mehr Zeit für ein gutes Debugging-Meldesystem verwende, es hilft, Bugs zu finden, wenn sie benötigt werden.

Hier sind einige nützliche Links

Ссылка

workbench debugger (wenn Sie herausfinden können, wie man Manipulate und Dynamics debuggt, lassen Sie es mich wissen)

Ссылка

    
___ tag123wolframmathematica ___ Wolfram Mathematica ist ein Computeralgebrasystem und eine Programmiersprache von Wolfram Research. Mathematica hat eine eigene Stack Exchange-Site unter http://mathematica.stackexchange.com/. ___ tag123Messages ___ eine Kommunikation mit Informationen, Nachrichten, Ratschlägen, Anfragen oder Ähnlichem, die per Kurier, Radio, Telefon oder auf andere Weise gesendet werden. ___ qstnhdr ___ Nachrichtengenerierung in Mathematica ___ answer5122273 ___

Ich möchte immer globale Variablen mit dem Präfix %code% und Funktionen ohne das Präfix behalten, also würde ich schreiben:

%Vor%

Dann kannst du %code% genau so verwenden, wie du jetzt %code% benutzen würdest. Wenn Sie die Debugging-Nachrichten loswerden möchten, heben Sie einfach die Variable auf:

%Vor%

Es gibt einige Vorteile, dies auf diese Weise zu tun. Eine Möglichkeit ist, dass Sie %code% verwenden können, um das Debugging lokal und lokal zu aktivieren . em>:

%Vor%

Sie können %code% sogar lokal anders machen, zB %code% -Werte für ein %code% , oder die Debugging-Meldungen woanders anweisen, wie

%Vor%

Mit Bedacht verwendet das dynamische Scoping von %code% die Verwendung globaler Variablen relativ sicher und kontrolliert Weg.

    
___
1
Antwort

h: Nachrichten zeigen keine Nachrichten an, wenn p: commandButton gedrückt wird

Ich habe ein Problem mit dem Tag h: messages in JSF, das einfach keine Nachrichten anzeigt. Im Glassfish-Protokoll sind keine Fehler, wenn ich auf die Schaltfläche klicke. Das Setup ist wie folgt: test.xhtml: %Vor% Mit SessionScopedBean:...
23.04.2013, 17:06
2
Antworten

Was bedeuten diese Spring-Debug-Meldungen?

Ich verwende Spring IoC in meiner eigenständigen Java-Anwendung. Wenn die Anwendung gestartet wird, erstellt sie ein Protokoll mit Start-Informationen. Einige Nachrichten, die ich nicht verstehe, bitte hilf mir, sie zu verstehen und zu erklären,...
02.06.2011, 12:17
1
Antwort

Anhänge in Threads anzeigen

Ich arbeite gerade an einer alternativen Möglichkeit, die Threads und Nachrichten anzuzeigen. Aber ich habe Probleme herauszufinden, wie man die an eine Nachricht angehängten Bilder anzeigt. Ich habe eine GET-Anfrage an diese URL: https://gr...
08.02.2012, 11:28
1
Antwort

Visual C ++: Wie kann ich eine Kompilierzeitnachricht in Code einbetten und anzeigen?

Gibt es eine Möglichkeit, eine Nachricht in Code einzubetten, die während während der Kompilierung angezeigt wird, wenn dieser Code kompiliert wird? Die Nachrichten sind diagnostischer Natur und sollten den Kompiliervorgang nicht ändern ode...
11.06.2009, 07:03
2
Antworten

Versucht, eine Nachricht von os x message w / applescript zu erhalten

Hey Ich führe das folgende Skript aus: %Vor% Aber ich bekomme den folgenden Fehler jedes Mal in Nachrichten, wenn ich eine Nachricht bekomme: %Vor% Ich kann diesen Fehler nirgends im Internet finden. Es scheint für jeden Chat außer dem a...
11.09.2012, 20:39
1
Antwort

Auf neue Systembenachrichtigungen OSX achten

Ist es möglich, auf neue Benachrichtigungen, die macOS empfängt, zu hören / zu beobachten? Ich meine, wenn eine neue iMessage- oder Slack-Nachricht empfangen wird (also im Grunde alles, was dazu führt, dass NotificationCenter eine Benachricht...
09.08.2017, 14:28
2
Antworten

Wie werden Oracle-Fehlermeldungen ausführlicher?

Die Nachricht, die mich verrückt macht, ist ORA-01008 - Not all variables bound . Gibt es eine Möglichkeit zu wissen, welchen der 42 möglichen Variablennamen ich falsch geschrieben habe, ohne auf den Monitor zu starren, bis meine Augen hera...
23.01.2009, 16:24
5
Antworten

Nachrichtengenerierung in Mathematica

In einem Modul, das ich schreibe, habe ich (für die Entwicklungs- und Testphasen) viele Print["Messages"] . Ich habe zwei Fragen: Was ist die beste Vorgehensweise, um solche "Debugging" -Nachrichten zu drucken? Gibt es eine Möglichkeit,...
02.01.2012, 08:24