lørdag, januar 23, 2021

C++: Runtime crash

Daily Rush Debat Programmering C++: Runtime crash

  • Forfatter
    Emne
  • #0

    Skye
    Bruger
    235 indlæg
    Offline

    Heyas,

    Tror for engang skyld jeg lige er nød til at høre folket.

    Har følgende kode som irriterer mig pt.:

    char test2[64];
    char test3[64];
    bool temp;
    for (int i=0; i < 1024; i++) { temp = mynet.Connect("localhost", i); if (!temp) { sprintf_s(test2, sizeof(test2), "%d...", i); AppendText(eStatus, test2); } if (temp) { sprintf_s(test2, sizeof(test2), "%d...", i); AppendText(eStatus, test2); mynet.Disconnect(); } }

    Og er sikkert bedre måder at gøre det på, men irrelevant lige nu :p

    Den opretter forbindelse til port i, med andre ord kører den igennem de første 1024 porte og tjekker hvilke der kan oprettes forbindelse til.. Eller det var ideen.

    Har gjort dette før uden problem, dog er det et stykke tid siden.

    Nu opstår der så følgende problem:

    Når løkken når til port 5 (i=5 :p) fryser programmet (Not Responding).
    Dette vel at mærke når jeg kører den kompilerede fil. Hvis jeg derimod debugger, så kører den fint igennem.

    Nogen ideer til hvorfor den kan køre i debug, men ikke ellers?

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

Viser 5 kommentarer - 1 til 5 (af 5 i alt)
  • Forfatter
    Kommentarer
  • #1

    TheSpook
    Bruger
    900 indlæg
    Offline

    afhængig af hvordan den port handler nu fungerer – så evt. prøv at smide en try-catch rundt om, og se om du kan fange fejlen.

    Det lyder i mine øre rimeligt skummelt at du kan køre det i debug men ik compile.

    Jeg kunne dog forestille mig at den handler fungerer anderledes i runtime end i debug mode. Måske er det et spørgsmål om at du skal huske at lukke de connections du har oprettet.

    eg. destructors.

    prøv det.. dunno.

    void clapyourhands(){ if(youreReadyAndYouKnowIt)clapyourhands();}

    #2

    Skye
    Bruger
    235 indlæg
    Offline

    mm.. var lige præcist der problemet lagde..

    Lukkede fint nok i tilfælde af åben port, men havde glemt også at lukke ved lukket port..

    Syntes dog stadigt det er skummelt den crasher runtime, men ingen fejl rapporterer ved debug.

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

    #3

    Kolben
    Bruger
    18.939 indlæg
    Offline

    #2
    Kunne forestille mig at din debug-kode yield’er hele tiden, for at returnere til interfacet, mens din release kode ikke gør. Sidstnævnte ender så med at smadre en eller anden netværksstak.

    P=NP?

    #4

    FIRESTORM
    Bruger
    5.349 indlæg
    Offline

    Det er da meget naturligt at ting der er slam kodet kan køre i debug, men ikke i release. Release er alt unødvendig fejlhåndtering jo irrelevant da det hele drejer sig om performance i c/c++. C++ er ikke C# eller Java.

    #5

    Skye
    Bruger
    235 indlæg
    Offline

    #4

    Nu er jeg ikke ny i c++, så du behøves ikke belære omkring performance og C#/Java.

    Og syntes ikke det er meget naturligt.. Har tidligere kørt med versioner af vs, lavet samme fejl, og ikke oplevet den opførsel. Deraf min undren.

    Heldigtvis var det glemsomhed som forårsagede problemet :p

    O death, with thy ebony cloak sublime. How abstract thy harvest rose doth fall. Consigned to the flames of woe in sweet modesty. I renounce myself from the everdawn.

Viser 5 kommentarer - 1 til 5 (af 5 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.