Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Bu1

Frischling

  • »Bu1« ist der Autor dieses Themas

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

1

17.05.2011, 21:36

[gelöst] Probleme beim erstellen eines Logfiles

Hi,

bei meinem Versuch ein eigenes Logfile zu programieren habe ich ein Problem!

Bei mir trit immer dieser Fehler beim Ausführen auf:

Zitat

Unbehandelte Ausnahme bei 0x5b421cee (msvcr100d.dll) in T_LogFile_1.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x5e5c85ce.

Der Fehler trit bei Folgender Funktion auf

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BOOL WriteToLog(char* pcFormat, ...)
{
char *pcText; pcText = "";          // Der zu schreibende Text
    va_list VAList;                     // Variable->Argumente-List

    // Parameter anfertigen und den String erstellen
    va_start(VAList, pcFormat);
    vsprintf(pcText, pcFormat, VAList);
    va_end(VAList);

    // String ins Logbuch schreiben
    if(m_pLogFile)
    {
        fprintf(m_pLogFile, "<tr>%s</tr>\n", pcText);
#ifdef BM_DEBUG
        fflush(m_pLogFile);
#endif

return TRUE;

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Bu1« (18.05.2011, 14:17)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

17.05.2011, 23:25

Und in welcher Zeile genau tritt der Fehler auf?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

18.05.2011, 00:38

Vermutlich in zeile 8. Er beschreibt den geschützten Bereich, auf den pcText zeigt.
Du brauchst einen Buffer. Schau zur not ins Buch.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

18.05.2011, 00:42

Vermutlich in zeile 8. Er beschreibt den geschützten Bereich, auf den pcText zeigt.

Stimmt, mir wars dann zu blöd zu suchen :D

Bu1

Frischling

  • »Bu1« ist der Autor dieses Themas

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

5

18.05.2011, 14:16

Danke jetzt Funktionierts!

Ich habe es So gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
char acText[2024];          // Der zu schreibende Text
    va_list VAList;         // Variable->Argumente-List

    // Parameter anfertigen und den String erstellen
    va_start(VAList, pcFormat);
    vsprintf(acText, pcFormat, VAList);
    va_end(VAList);

:thumbsup:

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

ProAmateur

Alter Hase

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

6

12.02.2013, 15:36

hi
ich habe im Moment genau das selbe Problem auch bei meiner LogFile.

Der Fehler tritt da auf:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// hier kommt der Fehler
WriteHTMLf("<p>(%i|%i) orient:%s</p>", Vector.GetX(), Vector.GetY(), Vector.GetOrient());


void CLogFile::WriteHTMLf(char *TextIn, ...)
{
    char Text[2024];
    va_list VAList;

    va_start(VAList, TextIn);
    vsprintf(Text, TextIn, VAList);
    va_end(VAList);

    Log << Text;
};


Ich lasse die selbe Funktionen noch mit anderen Parameter aufrufen und da kommt keine Fehlermeldung. Ich schätze mal es liegt an diese.
Als Vergleich:

C-/C++-Quelltext

1
WriteHTMLf("<p>Datei: %s; Zeile: %d; Funktion: %s;</p>", RemoveDir(File), Line, Function); 


Jemand eine Idee?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

12.02.2013, 15:42

char[2024] ist eine ganz gute Methode, um einen korrupten Stack zu bekommen.

Wieso vor allem 2024?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ProAmateur

Alter Hase

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

8

12.02.2013, 17:59

Habs geändert, aber wieso sollte das daran liegen?
Sonst eine Idee?
Ews muss ja eig an den Parametern liegen
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

12.02.2013, 18:47

Ich habe nie behauptet, dass das die Quelle Deines aktuellen Problems ist, sondern dass lokale fixed-size char-Arrays in ein sprintf gejagt DIE Quelle schlechthin für Exploits und Abstürze sind. Je kleiner sie sind, desto gefährlicher.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ProAmateur

Alter Hase

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

10

12.02.2013, 18:53

also was soll ich deiner Meinung nach tun?
dynamische draus machen? oder was
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Werbeanzeige