Integer devision by zero, komme nicht mehr weiter!



  • hallo liebe community,

    ich hab folgendes problem. ich schreibe ein programm das in einer schleife webabfragen macht und hab mir dazu eine socks funktion geschrieben, besonders ist auch noch dabei, dass ich die winapis zur laufzeit einbinde und die Funktionen dann erst verwende (wapi._WINAPI...), so nun zu meinem probelm nach der 5. abfrage bekomme ich immer an dieser stelle eine fehlermeldung und ich komme einfach nicht drauf da 1. nicht durch 0 geteilt wird und 2. es sinnlos ist warum der fehler erst nach dem 5. aufruf kommt. ich hoffe ihr könnt mir helfen... weis nicht mehr weiter was ich noch machen könnte 😕

    Screen:
    http://www0.xup.in/exec/ximg.php?fid=14503234


  • Mod

    Debuggen!
    Unterberchen klicken und den Code verfolgen.
    Callstack ansehen...
    Es ist doch Dein Code.

    BTW: In Deinem Code sehe in keine Division.



  • Martin Richter schrieb:

    BTW: In Deinem Code sehe in keine Division.

    Der Rest des Code war wahrscheinlich zu geheim.



  • Ich finde dieses

    if (s == -1)
    {  ...closesocket(s); // Hier wird der socket -1 geschlossen. Ist der nicht ungültig?
       return NULL;
    }
    

    merkwürdig.



  • hier noch die funktion zum lader der proc Adresse in der laufzeit, ka wo und wie ich da noch suchen kann 😞

    void *API::_GetProcAddress(HMODULE module, LPSTR name)
    {
    	PIMAGE_NT_HEADERS32 ntHeaders  = (PIMAGE_NT_HEADERS32)((LPBYTE)module + ((PIMAGE_DOS_HEADER)module)->e_lfanew);
    	PIMAGE_DATA_DIRECTORY impDir = &ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
    	PIMAGE_EXPORT_DIRECTORY ied =  (PIMAGE_EXPORT_DIRECTORY)((LPBYTE)module + impDir->VirtualAddress);
    
    	for(DWORD i = 0; i < ied->NumberOfNames; i++)
    	{
    		LPDWORD curName = (LPDWORD)(((LPBYTE)module) + ied->AddressOfNames + i * sizeof(DWORD));
    		if(curName && API::CompareA(name, (LPSTR)((LPBYTE)module + *curName), -1, -1) == 0)
    		{
    			LPWORD pw = (LPWORD)(((LPBYTE)module) + ied->AddressOfNameOrdinals + i * sizeof(WORD));
    			curName = (LPDWORD)(((LPBYTE)module) + ied->AddressOfFunctions + (*pw) * sizeof(DWORD));
    			return ((LPBYTE)module + *curName);
    		}
    	}
    	return NULL;
    }
    


  • Nicht wahllos im Code rumsuchen, hör lieber auf Martin. Debugge vernünftig, dann siehst du zur Laufzeit die Stelle, an der es kracht.



  • kackt immer in der zeile

    SOCKET s = wapi._socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    

    ab ist auf dem screen nicht zu sehen und kann da nix mehr weiter debuggen, in einem Fenster sagt er mir auch nocht "Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für ws2_32.dll" http://www0.xup.in/exec/ximg.php?fid=20098606



  • Meist hat man in VS auch nen gelben Pfeil in der Nähe der Stelle wo das Problem auftritt:
    http://imageshack.us/f/812/crashr.png/
    ...und ansonsten hilft wie gesagt halt der Callstack ("Aufrufliste") weiter



  • hab ich siehe oben, aber ich kann auch eig nicht recht viel damit anfangen und google hilft mir auch nicht wirklich weiter



  • Was ist denn da PrxerDrv im StackTrace? vllt. verursacht da ne Drittanbieter-Komponente Probleme?


Anmelden zum Antworten