WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

lastwarn mit stack

 

dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2012, 15:24     Titel: lastwarn mit stack
  Antworten mit Zitat      
Hallo,

es gibt ja lasterror und lasterr. Einmal mit, einmal ohne Stack.

Jetzt suche ich sozusagen 'lastwarning', also ne Möglichkeit nicht nur die Warnung zu erhalten sondern auch wo sie aufgetreten ist.

Gibts da ne Möglichkeit? Was besseres als diary einschalten und parsen ist mir bisher nicht eingefallen Sad

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.10.2012, 17:15     Titel: Re: lastwarn mit stack
  Antworten mit Zitat      
Hallo dmjr,

Vielleicht hilft dies bereits:
Code:
warning('backtrace', 'on')
warning('verbose', 'on');

Gruß, Jan

Zuletzt bearbeitet von Jan S am 03.10.2012, 00:29, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Themenstarter

Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2012, 21:25     Titel:
  Antworten mit Zitat      
Damit kann ich doch nur die Darstellung auf der Console beeinflussen oder?

Ich suche etwas um eine Funktion auszuführen (geschieht aktuell via evalc). Anschließend möchte ich alle aufgetretenen Warnungen wissen, inklusive Stack. Die entsprechenden Infos sollen dann durch eine Funktion weiterverarbeitet werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.10.2012, 00:51     Titel:
  Antworten mit Zitat      
Hallo dmjr,

Nun wird mir Dein Wunsch klarer.

Wie wäre es die WARNING Funktion zu überlagern, indem Du einfach eine eigene Funktion mit dem gleichen Namen erstellst? In Matlab 6.5 wurden built-ins noch vor benutzerdefinierten Funktionen bevorzugt, aber in modernen Versionen hat sich dies geändert.

Also einfach dies als M-File speichern:
Code:
function Out = warning(varargin)
persistent List

if nargout
  if strcmp(varargin{1}, '$flushList')  % Reply and clear stored list
    Out = List;
    List = [];
  else  % Standard call, most likely a query:
    Out = builtin('warning', varargin{:});
  end
  return;
end

% Call the original warning function:
builtin('warning', varargin{:});

% Get message and ID:
[Msg, ID] = lastwarn;

n = length(List) + 1;
List(n).Message = Msg;
List(n).ID = ID;
List(n).Stack = dbstack(1);  % Omit this function itself
 

Hilft Dir das weiter?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Themenstarter

Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2012, 01:03     Titel:
  Antworten mit Zitat      
Besten Dank,

Built-In Funktionen zu überlagern ist eine mir bisher nicht bekannte Technik.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.10.2012, 15:41     Titel:
  Antworten mit Zitat      
Hallo dmjr,

Damit sollte man auch vorsichtig sein. Ich hatte einmal STRCMP überlagert und wegen eines Bugs lief plötzlich nichts mehr. Ich konnte nicht einmal the PATH verändern oder ein File im Editor öffnen.
Aber wenn alles richtig läuft, eröffnet dies neue Möglichkeiten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Themenstarter

Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2012, 14:23     Titel:
  Antworten mit Zitat      
Hi,

die Lösung tut leider nicht ganz was ich mir erhofft habe. Selbst erstellte Warnungen werden problemlos "abgefangen", Warnungen durch buildins tauchen aber nicht in der Liste auf.

Beispiel:
Code:
mkdir('temp_dummy')
mkdir('temp_dummy')

spätestens der zweite Aufruf erzeugt die Warnung
Zitat:
Warning: Directory already exists.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.10.2012, 15:39     Titel:
  Antworten mit Zitat      
Hallo dmjr,

Stimmt. Bei mir rufen Builtin-Funktionen auch das Builtin-WARNING auf.
Es hilft auch nicht die eigene Funktion in den ersten Ordner im PATH zu legen.

Ich habe keine weiteren Ideen mehr.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.