sqrt(x) funktioniert nicht



  • Hallo community,

    Ich habe einen Laufzeitfehler ­čś×

    Wenn ich ein kleines Nebenprogramm schreibe, funktioniert das:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
    	cout << sqrt(9);
    	system("Pause");
    }
    

    Aber in meinen Haupprogramm erhalte ich beim debuggen genau beim Wurzelziehen:
    <"sqrt.asm" wurde nicht gefunden>

    Bis jetzt hab ich nur herausgefunden, dass es da um eine nicht herausgefunden Assembleradresse geht.
    Mit Assembler kenne ich mich aber gar nicht aus

    Viele Dank im Voraus f├╝r eure Antworten!

    mfg



  • sqrt funktioniert schon.

    Allerdings findet der Debugger nicht den Quellcode daf├╝r.
    Den hast du i.A. auch nicht, da sqrt in der C-Standardbibliothek steht.



  • Wahrscheinlich ziehst du die Wurzel aus einer negativen Zahl oder sonst irgendwas ung├╝ltigem. Das erzeugt eine Exception in sqrt, so dass der Debugger dort anh├Ąlt und sich in der Folge ├╝ber den fehlenden Quellcode beschwert.

    Kann man schwer sagen ohne mehr Details, aber jetzt findest du das Problem wahrscheinlich selbst.



  • Hallo DirkB,

    Soll das hei├čen ich soll statt cmath math.h inkludieren.
    Das hab ich auch schon probiert und bringt leider auch nichts.
    Oder verstehe ich deine Aussage falsch?

    mfg



  • Hallo Bashar,

    nein leider keine irregul├Ąren ├ťbergabeparameter.

    mfg


  • Mod

    Das erzeugt eine Exception in sqrt

    Nein, es gibt einen sog. domain error, und sqrt gibt einen implementationsspezifischen Wert zur├╝ck (bei der libstdc++ ist es -nan).

    Edit: Jetzt verstehe ich erst, was Bashar mit Exception meint, n├Ąmlich FE_INVALID (die man anscheinend als invalid argument exception bezeichnet). Die bringt aber nicht das Programm dazu, anzuhalten oder abzust├╝rzen. Au├čerdem ist es ziemlich verwirrend, diesen Begriff in einem C++-Board zu nutzen.



  • Hast du irgendwas in den Einstellungen deines Projekts ver├Ąndert? Wenn der Linker die Definitionen der Funktionen nicht findet liegt das wohl daran, dass du nicht alle Standard Libs einbindest.



  • Alda schrieb:

    Oder verstehe ich deine Aussage falsch?

    Ja, tust du.

    Du hast den Quellcode f├╝r die Standardlibrary nicht.
    (Und wenn doch, wei├č der Debugger nicht wo der steht).
    Das ist halt so bei Libraries. Daf├╝r sind sie auch da (Funktionen ohne Quellcode zu verteiben).

    Das schr├Ąnkt aber die Funktion von dem Programm nicht ein.



  • Arcoth schrieb:

    Edit: Jetzt verstehe ich erst, was Bashar mit Exception meint, n├Ąmlich FE_INVALID (die man anscheinend als invalid argument exception bezeichnet). Die bringt aber nicht das Programm dazu, anzuhalten oder abzust├╝rzen.

    Nicht das Programm, den Debugger. Dachte ich jedenfalls, aber das scheint nicht der Fall zu sein.

    Au├čerdem ist es ziemlich verwirrend, diesen Begriff in einem C++-Board zu nutzen.

    Ich kann ja nichts daf├╝r, dass der OP ein Problem mit seiner IDE im C++-Board postet.

    DirkB schrieb:

    Du hast den Quellcode f├╝r die Standardlibrary nicht.

    Das ist doch nur ein sekund├Ąres Problem. Warum wird der Quellcode von sqrt ├╝berhaupt angefordert? Das kann doch nur hei├čen, dass der Debugger innerhalb dieser Funktion gestoppt wurde.



  • Bashar schrieb:

    Arcoth schrieb:

    Edit: Jetzt verstehe ich erst, was Bashar mit Exception meint, n├Ąmlich FE_INVALID (die man anscheinend als invalid argument exception bezeichnet). Die bringt aber nicht das Programm dazu, anzuhalten oder abzust├╝rzen.

    Nicht das Programm, den Debugger. Dachte ich jedenfalls, aber das scheint nicht der Fall zu sein.

    Naja, ich traue deiner Vermutung mehr als der Aussage von Alda.



  • Bashar schrieb:

    Warum wird der Quellcode von sqrt ├╝berhaupt angefordert? Das kann doch nur hei├čen, dass der Debugger innerhalb dieser Funktion gestoppt wurde.

    Oder der TO ist im Einzelschritt da rein gelaufen - weil er mal sehen wollte, wie das Programm so abl├Ąuft.



  • Wieso behauptet er dann, das sei ein Laufzeitfehler?


Log in to reply