Die Vermeidung einer MEX-Datei vom Absturz in MATLAB
Habe ich eine MEX-Datei, die ich "ausgeliehen" von jemand anderem, um mir zu helfen-code ein semi-automatisiertes nuclear detection-Algorithmus. Das problem ist, dass die MEX-Datei sporadisch verursacht einen segmentation fault. Jedoch, wenn der code ausgeführt wird, mit den gleichen Parametern ein zweites mal, es ist in Ordnung.
Ich hoffte, dass es war eine Art try/catch
idiom für die MEX-Dateien, aber nachdem die meisten meiner Samstag auf der Suche nach etwas, ich konnte nichts finden.
Jede Hilfe zu diesem Thema wäre toll! Ansonsten werde ich in den Hafen der .cpp
in MATLAB (und es ist rund 10.000 Zeilen mit Hunderten von Abhängigkeiten :-().
- Und Sie wollen nicht jeden code einen Unfall mit nuklearen zugehörigen codes. Könnte es beginnen Kriege!
- Anstelle von wodurch ein segment-Fehler, Ungültiger Code kann auch ändern, zufällige Speicher-Adressen Ihrer Matlab-Prozess, akzeptieren Sie Fehler, die Sie können nicht sicher erkannt werden, ist eine schlechte Idee!
- Sie haben wirklich keine Wahl, sondern korrigieren Sie den code. Wie @Daniel erwähnt, nicht jeder Fehler wird zu einer behandelbaren Ausnahme. Es ist genauso wahrscheinlich kann undetectably beschädigt andere Teile der MATLAB-Prozess " Adressraum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Welche Plattform verwenden Sie? Es sind Methoden, die helfen debug deine MEX-Dateien. Wann gibt es ein segmentation fault, können Sie eine IDE zu sagen, wo im code es zu Abstürzen.
Hier sind die Anweisungen für Mac OS: http://www.mathworks.com/help/matlab/matlab_external/debugging-on-mac-platforms.html
Hier sind die Anweisungen für Linux: http://www.mathworks.com/help/matlab/matlab_external/debugging-on-linux-platforms.html
Hier sind die Anweisungen für Windows: http://www.mathworks.com/help/matlab/matlab_external/debugging-on-microsoft-windows-platforms.html
NB: ich bin gegen bezieht sich die OP um einen link, off-site zu helfen, mit seiner oder Ihrer Frage. Ich in der Regel umfassen die meisten der Antworten in meinen Beiträgen und links als Verweise. Weil Sie nicht mir gesagt, welche Plattform Sie verwenden, werde ich nicht schreiben, Lösungen für alle Plattformen, die sehr viel Zeit. Als solche (und ich bete, dass die verbindungen stabil für eine lange Zeit), Sie können finden Sie auf den entsprechenden link für Ihre Plattform.